Problem mit PWM und Bascom

ElStu

Neues Mitglied
18. Apr. 2009
5
0
0
Sprachen
Hi,

vorweg möchte ich erwähnen, dass ich leider noch nicht so erfahren auf dem Gebiet der µC bin und noch nie zuvor mit PWM gearbeitet habe.

Zu meinem Problem: ich möchte eine PWM Steuerung mit dem Mega8 für LEDs realisieren. Dazu habe ich im www auch einiges gefunden. Leider tut meine Schaltung garnichts bzw. genauer gesagt, meine LEDs sind auf Dauerbetrieb, ganz unabhänig davon ob ich PWM einschalte oder nicht.

Ich wäre euch echt dankbar, wenn man jemand über meinen Code schauen könnte und mir sagen könnte, was ich alles falsch mache?

Code:
$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
'-------------------------------------------------------------------------------------------------
' Ports konfigurieren
'-------------------------------------------------------------------------------------------------
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output

Config Pind.7 = Input
Portd.7 = 1

'-------------------------------------------------------------------------------------------------
' PWM
'-------------------------------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Enable Timer1
Start Timer1
Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Up
Enable Timer2
Start Timer2

'-------------------------------------------------------------------------------------------------
' Alias 
'-------------------------------------------------------------------------------------------------
Schalter Alias Pind.7                                      

Led0 Alias Portd.0                                          'LEDs zur Modusanzeige
Led1 Alias Portd.1

'-------------------------------------------------------------------------------------------------
' Hauptprogramm
'-------------------------------------------------------------------------------------------------
Do
 
   If Schalter = 1 Then  
      Led0 = 1
      Led1 = 0


      Pwm1a = 255
      Pwm1b = 125
      OCR2 = 10

   Else 
      Led0 = 0
      Led1 = 1

  End If

Loop

End

Das Programm ist eig. ein paar Nummern komplexer, ich habe es aber mal der Überischtlichkeit wegen soweit abgespeckt, da der Rest keinen EInfluss auf den Fehler hat.


Achja, Hardware technisch sieht die Schaltung so aus, dass am Ausgang des Mega8 ein IRLZ34N liegt (100 Ohm dazwischen).

Könnt ihr mir da weiterhelfen??

Schonmal vielen Dank an alle, die bis hierher gelesen haben!

MfG
ElStu
 
Hallo und willkommen im Forum! :ciao:

Vielleicht solltest du doch dein ganzes Programm hier einstellen, dann können wir ggf. weitere Fehler ausschließen. ;)


Der Hauptfehler scheint bei dir im Verständnis des PWM zu liegen.
Wenn du dir die BASCOM-Hilfe zu PWM noch einmal ansiehst, dann wirst du die Grundlagen dazu auch besser verstehen. ;)

Nun aber mal in Kürze:
Wenn du den Timer1 als PWM benutzen möchtest, dann wird am Port OC1A (und ggf. OC1B) ein PWM-Signal ausgegeben.
An diesen Port kannst du dann deine LED betreiben.

Durch das Signal wird der Port also schon ständig "high und low" geschaltet.... je nach Vorgabewert in der Programmierung.

Du musst also den Port nicht mehr separat ein und aus schalten. ;)

Lange Rede, kurzes Beispiel. :)

Code:
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1

Dim Z2 As Byte
....


For Z2 = 0 To 1023
Compare1a = Z2
Compare1b = Z2
Waitms 100
Next



Ich hoffe, dir helfen die Gedankenanstöße weiter. :)

Gruß,
Cassio
 
Hi,

Schonmal vielen Dank, Cassio

Ich stimme dir da absolut zu, dass ich es offensichtlich nicht richtig verstanden habe.

Mein Problem besteht jedoch weiterhin. Allerdings ist nun der Programmierfehler behoben, denn wenn ich nun die LED direkt an den AVR anschließe, funktioniert es einwandfrei. Gehe ich über den FET, ist wieder Dauerbetrieb angesagt. Ich verwende den IRLZ34N, Drain auf Masse, Gate über 100R auf AVR. Kann es an diesem FET liegen? Zu träge für PWM? Ich benötige doch N-Kanal? :confused:

MfG
 
Hallo ,

Ich stimme dir da absolut zu, dass ich es offensichtlich nicht richtig verstanden habe.
... soll ich ne PWM-FAQ schreiben ? ... :D :rolleyes:

Mein Problem besteht jedoch weiterhin. Allerdings ist nun der Programmierfehler behoben, denn wenn ich nun die LED direkt an den AVR anschließe, funktioniert es einwandfrei.
Das ist schon mal gut ... ;)

Gehe ich über den FET, ist wieder Dauerbetrieb angesagt. Ich verwende den IRLZ34N, Drain auf Masse, Gate über 100R auf AVR. Kann es an diesem FET liegen? Zu träge für PWM? Ich benötige doch N-Kanal? :confused:
Mal ne blöde Frage ... Du hast hier den Link zum Datenblatt reingestellt ...
Hast Du dir das Datenblatt selber schon mal angesehen ?? zB. mal das
Symbol ganz am Anfang in der Mitte ?? Was siehst Du neben dem MOSFET-
Symbol im Kreis ? Ich nenne so etwas implantierte Schutzdiode ... :)
Was passiert, wenn man den Transistor falsch anschließt ?? (z.B. Source und
Drain vertauscht)

Jetzt laß ich mal die Zahnräder bei dir im Hirn arbeiten. Ich bin sicher, du
kommst da selber drauf :D :D

Gruß
Dino
 
...Was passiert, wenn man den Transistor falsch anschließt ?? (z.B. Source und
Drain vertauscht) ....

Ja, es habe es mir angeschaut und mir sogar meine Gedanken dazu gemacht! da die LED an der Spannung hängt und ich mit dem FET die Masse schalten will, müsste es doch so richtig sein? Zumindest wäre so die Diode in Durchlassrichtung, oder bin ich da komplett falsch? Oder hat die Diode einen Sinn der mir noch nicht klar ist??

mfg
 
Hallo,

Ja, es habe es mir angeschaut und mir sogar meine Gedanken dazu gemacht! da die LED an der Spannung hängt und ich mit dem FET die Masse schalten will, müsste es doch so richtig sein? Zumindest wäre so die Diode in Durchlassrichtung, oder bin ich da komplett falsch? Oder hat die Diode einen Sinn der mir noch nicht klar ist??
wie gesagt. Der Transistor hat eine eingebaute SCHUTZdiode. :D
Das hast du aber bei den meißten oder sogar allen MOSFETs. Und du möchtest
ja was mit dem Teil schalten. Wenn du ihn falsch rum anschließt ist die
Schutzdiode in Durchlaßrichtung und der Transistor räkelt sich in der Gegend
rum ;)

Sieh dir mal das Symbol auf der ersten Seite an und dann die Schaltungen
weiter hinten. Dann vergleich mal die Batterien in den Zeichnungen (Polarität)
und die Anschlußpins des Symbols und in den Zeichnungen. Dann wirst Du
feststellen, das bei dir Drain und Source vertauscht ist ;)

Gruß
Dino
 
Hmmm, dann bleibt mir wohl nichts anderes mehr übrig als mich zu bedanken?? Diese Schaltungen weiter unten habe ich mir wirklich nicht abgeschaut.

Dann werde ich das ganze mal ändern!!

Nochmal vielen Dank euch beiden für die schnelle Hilfe!!
Ich finde es toll, dass ihr euch auch um Anfänger kümmert, ohne gleich viele blöde Kommentare loszuwerden!! :D

MfG
 
Hallo,

Hmmm, dann bleibt mir wohl nichts anderes mehr übrig als mich zu bedanken?? Diese Schaltungen weiter unten habe ich mir wirklich nicht abgeschaut.
macht man doch gerne :D

Dann werde ich das ganze mal ändern!!
dann warte ich mal auf ne Erfolgsmeldung ... ;)

Nochmal vielen Dank euch beiden für die schnelle Hilfe!!
Ich finde es toll, dass ihr euch auch um Anfänger kümmert, ohne gleich viele blöde Kommentare loszuwerden!! :D
ich gebe normalerweise erst mal Tips und winke mit dem Zaunpfahl, weil ich
ja nicht weiß ob da einer nur nen blöden Flüchtigkeitsfehler gemacht hat.
Außerdem ist der Aha-Effekt größer wenn man es selber findet. Es steigert
das Glücksgefühl und das Wissen bleibt besser gespeichert :D

Gruß
Dino
 
sooo, dann mache ich mal meinen Erfolgsbericht.. Kaum macht mans richtig schon funzt's!!

Nochmal vielen Dank


Mal schaun was in Zukunft noch für Fehler/Probleme auftauchen..
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)