PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-CONTROL - PWM an beliebigen Ports möglich ?



akem
18.10.2006, 01:15
Hallöchen,
ich hab hier schon alles durchsucht und gegoogelt .. und hätte aber trotzdem mal ein paar Fragen an die Profi's :-)

Die Sache ist nämlich die:
Ich möchte mehrere RGB-Leuchtdioden unabhängig voneinander mit einem atmega32 ansteuern und dimmen können.
Die RGB-Dioden haben eine gemeinsame Kanode und je 3 Anoden für die einzelen Farben (R,G,B).

1:
Kann ich bei meinem RN-Control ATMEGA32 an jeden Port PWM durchführen oder benötige ich
dazu noch nen Motortreiber, wie z.B. der auf dem Board vorhandene.

Falls ja
1b:
Den Code für die PWM mit Bascom hab ich dem DemoProg entnommen. Hier werden beide Motor Kanäle einmal hoch und wieder runter gefahren. Ich weiß aber nicht wie ich das auf einem beliebigen Port umstelle (ohne zusätzlichen Motortreiber). Ich verstehe zwar die Config Outputs .. woher weiß der ATMEGA aber wo er die PWM macht =? also an welchem von dem Ports.





$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600


Dim I As Integer
Dim N As Integer

' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Pwm1a = 0 'Linker Motor aus
Pwm1b = 0 'rechter Motor aus

Tccr1b = Tccr1b Or &H02 'Prescaler = 8

'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 1 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN

'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 1 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN


I = 0
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I + 5
Loop Until I > 400

Wait 1
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I - 5
Loop Until I < 1
Pwm1a = 0 'Linker Motor aus
Pwm1b = 0 'rechter Motor aus


3. kann ich die Dioden direkt per Festwiderstand an die Ports hängen oder soll nen Transistor dazwischen hängen.

Vielen Dank für eure Hilfe.

Jon
18.10.2006, 07:38
Zu1:
Du kannst an jedem Port PWM durchführen. Bei den meisten aber nur softwaremäßig. Das heißt, du hast keine Hardware, die dir das Signal erstellt, sondern du musst es dann mit der Software regeln.

Zu1b:
Du brauchst keinen Motortreiber. Da kannst du auch das Programm auf dieser Seite nehmen.
https://www.roboternetz.de/wissen/index.php/Bascom_und_PWM

Zu3:
Du kannst die Dioden mit einem Widerstand direkt an den µC schließen, du darfst nur nicht einen Verbrauch von 20mA pro Port überschreiten. (mit den 20mA bin ich mir nicht gan sicher)

jon

Hanni
18.10.2006, 08:13
Du kannst die Dioden mit einem Widerstand direkt an den µC schließen, du darfst nur nicht einen Verbrauch von 20mA pro Port überschreiten. (mit den 20mA bin ich mir nicht gan sicher)

eher 20 mA je Pin ..
Je Port isses nen bisserl mehr...

aber das steht im Datenblatt :D


Zum PWM Problem:

Ja es ist möglich.
Verschiedene Lösungansätze findet man, indem man die SuFu benutzt :D

Grüße,
da Hanni

Jon
18.10.2006, 09:16
eher 20 mA je Pin ..
Meine ich auch ;)



aber das steht im Datenblatt :D
Da hatte ich kein Bok reinzuschauen.

jon

akem
19.10.2006, 00:23
Hi,
erstmal danke für eure Beiträge. Hat mich schonmal weiter gebracht :-)

Das Datenblatt habe ich schon mehrmals studiert, das hat schon nen Stammplatz auf'm Desktop. Aber da ich neu im Elektronikbereich bin, war ich mir nit sicher ob der Dauerbetrieb der LED direkt an den Pins so gut is. hab halt keine ahnung :-/ und habe bei einem Projekt an der Uni schon nen RN-Control sterben sehen.

Die SUFU und Wiki hab ich die letzten 3 tage ausgiebig bemüht. Leider ohne größeren erfolge. Endweder es Thema hat nit ganz gepasst oder die Schaltungen/Schaltpläne waren zu kompliziert für mich.

https://www.roboternetz.de/wissen/index.php/Bascom_und_PWM
Den Artikel hatte ich ganz am Anfang gelesen und hatte das auch probier .. leider ohne erfolg ..

Eigentlich hatte ich auch gemein: Geht PWM pro Pin ?

Wenn ich den Code aus'm Wiki aufspiele, macht er die PWM immer am gleichen Pin, egal ob ich




Config Pinc.3 = Output

oder


Config Pinc.4 = Output

oder


Config Pinb.1 = Output


Du kannst an jedem Port PWM durchführen. Bei den meisten aber nur softwaremäßig. Das heißt, du hast keine Hardware, die dir das Signal erstellt, sondern du musst es dann mit der Software regeln.

Ist das Beispiel auf https://www.roboternetz.de/wissen/index.php/Bascom_und_PWM
also Hardwaremäßig .. ? und falls ja wie kann ichs softwaremäßig machen ?? Beispiel wäre super nett ?

Will halt möglichst viele RBG's LED (mit je einem Pin für R,G,B) einzeln mit einem einzigen ATMEGA regeln

Wieviele Timer hat der ATMEGA32 eigentlich ? nur einen ?

Jon
19.10.2006, 08:24
Eigentlich hatte ich auch gemein: Geht PWM pro Pin ?
Ja und Nein.
Es geht an 4Pins Hardwaremäßig und an den anderen nur softwaremäßig.



Du kannst an jedem Port PWM durchführen. Bei den meisten aber nur softwaremäßig. Das heißt, du hast keine Hardware, die dir das Signal erstellt, sondern du musst es dann mit der Software regeln.
Ist das Beispiel auf https://www.roboternetz.de/wissen/index.php/Bascom_und_PWM
also Hardwaremäßig .. ?
Das ist hardwaremäßig.

und falls ja wie kann ichs softwaremäßig machen ?? Beispiel wäre super nett ?
Ich habe auch nur gelesen, dass es softwaremäßig geht. Wie es aber im Programm aussieht weiß ich nicht.
Ich vermute mal irgenwie so in der Art:

Portx.y = 1
waitus z
Portx.y = 0




Wieviele Timer hat der ATMEGA32 eigentlich ? nur einen ?
Wie oben schon gesagt insgesammt 4Kanäle.

jon

{;} 2be
22.10.2006, 20:29
hi
ich hatte dieses Problem auch schon mal
es ist eigentlich gar nicht schwer Software Pwm zu generieren
schau mal auf diese Seite.Macht das Leben leichter
http://www.smartprogramming.de/index.php?siteid=10
viel spaß mit den RGB Leds

akem
24.10.2006, 23:34
danke .. das is genau das was ich gesucht habe .. =P~

therabbit112
22.01.2012, 15:40
hi

http://www.smartprogramming.de/index.php?siteid=10


Leider geht der Link nicht mehr, hat jemand einen anderen Link? Habe nämlich das gleiche Problem.

peterfido
22.01.2012, 21:00
Es gibt eine recht zuverlässige Soft-PWM Routine, wenn man nach "Bascom Knight Rider (http://bascom-forum.de/archive/index.php/t-1293.html?)" googlet.