Mit Pin 1 sagst du das der Motor in Betrieb gehen soll, wenn du dein Signal auf Pin 9 legst dreht der Motor in die andere Richtung. Schau dir das Datenblatt vom L293B da ist das etwas übersichtlicher, die Pin sind allerdings anders.
Hubert
Hallo,
ich durchplane gerade meinen ersten Roboter:
Er soll erst einmal nur durch das Zimmer fahren können und Hindernissen auf Berührung ausweichen können.
Ich habe noch zwei kleine Motoren mit einem Drehmoment von 1,2 N/cm hier liegen, die möchte ich benutzen.
Für die Ansteuerung der Motoren möchte ich den IC L293 D benutzen.
Kann ich einfach in Pin 8 von diesem IC die Versorgungsspannung von 9V leiten? Das hat mich etwas gewundert als ich zum ersten Mal einen Schaltplan von diesem IC gesehen habe. Hält der das aus?
Und die Motoren hänge ich dann einfach zwischen die Pins 3 und 6, bzw. 11 und 14. Da muss anscheinend auch kein Kondensator oder so was dazwischen, richtig?
Die Pins 1, 2, 7, 9, 10 und 15 verbinde ich dann einfach direkt mit Pins des Controllers, so weit richtig?
Die Controller-Pins, die zu den Pins 2, 7, 10 und 15 führen, lasse ich dann einfach zuerst in Ruhe und verändere gar nichts, im Programmcode, wenn ich die Richtung der Motoren nicht ändern möchte.
Aber was ist mit dem anderen beiden Pins 1, bzw. 9?
Was muss ich damit machen?
Ich habe versucht das im Roboternetz-wiki zu verstehen:
Demnach kann ich, wenn ich die einfach ständig auf 1 stelle, den Motor auf voller Leistung laufen lassen. Wenn ich z.B. im Programm reinschreiben, dass er jede Millisekunde den Zustand einmal wechselt, habe ich nur noch halbe Leistung. Usw.
So, ich hoffe ich habe euch mit meiner Zusammenfassung nicht genervt, aber ich möchte trotzdem wissen, ob das so wie ich meine, alles richtig ist, damit ich wenn ich das dann zusammenbaue nicht sofort der Controller kaputt geht.
Vielen Dank für eure Mühen.
Thomas
Mit Pin 1 sagst du das der Motor in Betrieb gehen soll, wenn du dein Signal auf Pin 9 legst dreht der Motor in die andere Richtung. Schau dir das Datenblatt vom L293B da ist das etwas übersichtlicher, die Pin sind allerdings anders.
Hubert
Ok, danke. Dann scheint das ja soweit richtig zu sein.
Aber wenn ich Pin 1 regelmäßig immer umschalte, dann müsste ich doch nur noch die halbe Leistung haben, oder?
Wenn du PWM-Steuerung machst, legst du diese an Pin 1, auf Pin 2 und 9 gibst du die Drehrichtung vor.
Du hast theoretisch die halbe Leistung.
Hubert
Äh, was ist denn jetzt PWM? Ich verstehe nichteinmal denArtikel im Wiki komplett...
Könnte man das in Bascom nicht so in etwa lösen?
Wo ist das Problem, wenn man das einfach so macht?Code:WaitMS 1 Porta.1 = 0 WaitMS 1 Porta.1 = 0
Das mit der Drehrichtung ist klar. Ich frage mich nur, wie ich die Leistung richtig kontrollieren kann.
wenn dann...
WaitMS 1
Porta.1 = 0
WaitMS 1
Porta.1 = 1
Aber das ist viel zu langsam, du brauchst da schon PWM.
Am besten über Hardware PWM, dass spart µC Performence wärend dein Bot durch die Gegend fährt
RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de
Aha, danke
Und wie geht das? Ich weiß noch nicht mal, wie das mit Software geht. Wie geht es dann mit Hardware?
der atmega kann ein pwm erzeugen, ohne dass du dich darum kümmern musst. mit deiner methode ist der µC voll ausgelastet, und du kannst nichts anderes machen. schau dir im datenblatt die timer an.
damit hast du ein 50% pwm an port OC2 (port B3 am atmega 8 ).Code:ldi temp, (1<<WGM20)|(1<<COM21)|(1<<CS20) out TCCR2, temp ldi temp,127 out OCR2, temp
Dazu müsste man wissen was du für nen µC (ich gehe mal dar von aus das du einen at hast).
Im Datenblatt steht mir Sicherheit 8Bit Timer/Connter dort stehen einige Register beschrieben.
Beim beim ATMega8 (ich habe schon ewig nichts mehr in Bascom gemacht )
Tccr1a = &B10000001 'Pin OC1A nicht invertiert, 8-Bit-
Tccr1b = &B00000010 'PWM phasenkorrekt, Timer1 1/8
Aber das must dir für deinen µC ansehen. Und das Programm vervollständigen.
Ich habs Porbirt so gut wie möglich zu machen aber ich kann keine gewer geben
ich hoffe das man das erkenen kann!!!Code:$regfile = "m8def.dat" 'ATmega8-Deklarationen $crystal = 3686400 'Verwendeter Quarz: 3,6864 MHz Ddrb.1 = 1 'Pin PB1/OC1A ist Ausgang Ddrd.0 = 0 'Port D1 ist Eingang Tccr1a = &B10000001 'Pin OC1A nicht invertiert, 8-Bit- Tccr1b = &B00000010 'PWM phasenkorrekt, Timer1 1/8 Ocr1al = 127 'PWM = ca.50% Dim Temp As Byte 'temp Register Temp = Ocr1al 'kopire timer in temp Do 'Hauptschleife 'ist pin D1 = 1 dann If Pind.1 = 1 Then 'temp + 2 Temp = Temp + 2 'warten wegen prellen (taster Waitms 20 End If Ocr1al = Temp 'kopire trmp in timer loop
(auch die kometare)
MFG
Das Novj
@ robocat mir wär asm auch lieber
Lesezeichen