PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-MiniHBridge Anschlussbeispiel.



EDatabaseError
28.10.2006, 21:59
Hat jemand ein Anschlussbeispiel für den ATmega 168 und die MiniHBridge um einen Motor mit PWM vorwärts und rückwärts fahren lassen kann.

Mfg
tobi

BlooD
29.10.2006, 11:03
Das da:
https://www.roboternetz.de/wissen/index.php/Getriebemotoren_Ansteuerung

dürfte genau das sein, was du suchst.

EDatabaseError
29.10.2006, 11:44
jain... ich will wissen an welchen Pin am Atmel der PWM Pin der HBridge hin muss.

BlooD
29.10.2006, 14:44
Kommt auf den verwendeten Timer an...

Beim Mega168 laut Datenblatt:

https://www.roboternetz.de/phpBB2/files/atmega168.jpg

OC1A - Pin 15 - PB1
OC1B - Pin 16 - PB2
OC2A - Pin 17 - PB3
OC2B - Pin 5 - PD3
OC0A - Pin 12 - PD6
OC0B - Pin 11 - PD5

Sollten alle gehen.

Oder jeden beliebigen bei Software PWM (natürlich nicht unbedingt zu empfehlen)

EDatabaseError
29.10.2006, 18:25
ja ok...
der Enabled A und der Enabled B Pin brauchen nen 0815 I/O Pin.
Die Reichtungsanwahl a und b brauchen auch 0815 I/O Pins dann bleibt noch der PWM.
Muss der an den OC0A oder an den OC0B (ich verwende Timer0 reicht mir)

oder was ist besser wen ich prozessorzeit sparen will timer0 oder 1?

Mfg
Tobi

EDatabaseError
30.10.2006, 22:37
*push*
noch mal die frage ganz dumm gestellt:
An welchen Pin am AVR muss ich den PWM Pin der H-Bridge anschließen?

recycle
31.10.2006, 01:31
noch mal die frage ganz dumm gestellt:
An welchen Pin am AVR muss ich den PWM Pin der H-Bridge anschließen?


BlooD hat dir ein Stück weiter oben die Pins aufgelistet und sogar die Pinbelegung vom ATMega168 gepostet. Hättest du es gerne bunt ausgemalt oder was fehlt dir noch?

Manf
31.10.2006, 09:09
Hättest du es gerne bunt ausgemalt oder was fehlt dir noch?
Wie sähe das dann etwa aus, in bunt?
Manfred

EDatabaseError
31.10.2006, 09:46
](*,) drück ich mich den so doof aus!
Ich hab noch nie mit PWM gearbeitet!
Im RN Wissen wird immer nur von OCnA und OCnB geredet. Das gleiche in der Manual des Prozessors. Nur WELCHEN von den beiden muss ich an den PWM Pin anschließen.

mfg

btw: n ist name des timers. Timer0 = n := 0

BlooD
31.10.2006, 17:08
Soo nochmal ausführlicher und in bunt...

https://www.roboternetz.de/phpBB2/files/atmega168_2.jpg

[highlight=black:be78fa8f47]
OC1A - Pin 15 - PB1
OC1B - Pin 16 - PB2
OC2A - Pin 17 - PB3
OC2B - Pin 5 - PD3
OC0A - Pin 12 - PD6
OC0B - Pin 11 - PD5
[/highlight:be78fa8f47]

Du willst einen Motor in der Drehrichtung steuern. Dafür brauchen wir beispielsweise folgende Schaltung. Es geht natürlich auch mit einer anderen, aber diese ist universell für viele Motoren geeignet, damit kann man auch z.B. 12V und 10A steuern. Ein weiterer Vorteil ist auch das Bremsen des Motors (läuft nicht aus) wegen des 4 Quadrantenbetriebes, aber ich will es nicht übertreiben. Kurz: Die Schaltung ist gut.

https://www.roboternetz.de/wissen/images/c/c2/Hbrueckemosfet.gif

Die Richtung gibt vor, in welche - du ahnst es sicher schon - Richtung der Motor dreht. Bei +5V dreht er im Uhrzeigersinn, bei 0V dagegen.

Der PWM-Anschluss: Liegt da 5V an, dreht sich der Motor, liegt da 0V an, bleibt dieser stehen. Verschiedene Geschwindigkeiten erhält man, indem man den PWM-Anschluss mit einem Signal belegt, das schnell zwsichen 0V und 5V umschaltet. Wie schnell der Motor dann dreht bestimmt das Tastverhältniss, dieses beschreibt nämlich, wie lange innerhalb einer Periode 5V und 0V anstehen.

Zu sehen in folgender Grafik (PWM):
https://www.roboternetz.de/wiki/uploads/Main/pwm.gif

oder hier noch schöner:
https://www.roboternetz.de/wissen/images/4/4c/Tastverh%C3%A4ltnis.png

Irtümlich ist die Annahme, das die Geschwindigkeit über die Frequenz gesteuert wird. Die Frequenz, und damit die Periodenzeit, bleibt bei PWM gleich, ändern tut sich das Tastverhältnis und damit die Einschaltsdauer des Motors.

Man muss nicht die PWM-Pins des AVRs nehmen, um den Motor zu steuern. Man kanns auch so machen:


Zeit_ein = 200
Zeit_aus = 100


1:
IrgendeinPinAnDemPwmAngeschlossenIst = ein
Pause Zeit_ein
IrgendeinPinAnDemPwmAngeschlossenIst = aus
Pause Zeit_aus


Goto 1


Das nennt man dann Soft-PWM. Ist aber eine Belastung für den AVR und sollte vermieden werden. (PWM läuft i.d.R im Hintergrund)


Arbeitest du mit Bascom? Dann dieses Beispiel anschauen
https://www.roboternetz.de/wissen/index.php/Bascom_und_PWM


Soo, hoffentlich hats nun weitergeholfen. Ansonsten ist Google sicher auch dein Freund.

EDatabaseError
31.10.2006, 19:13
Also so doof bin ich nu au wieder nnich.

Ich hab heute ein bissel rumprobiert:

Jeder Timer hat 2 PWM ausgänge. OC1A und OC1B. Ich benötige ausschließlich OC1A.

OC1A mit dem PWM Pin der HBridge verbunden.

Folgender code:




' Hardware PWM mit Timer1

$regfile = "m168def.dat"
$crystal = 16000000
$baud = 9600
$framesize = 32
$swstack = 32
$hwstack = 32

Config Pinb.1 = Output
Config Pinb.2 = Output

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1

Dim I As Byte

Mop:
For I = 0 To 160
Compare1a = I
Waitms 100
Next I
Goto Mop

End


und nen oszi dran. fertig. Schöne bildchen.


mfg