Archiv verlassen und diese Seite im Standarddesign anzeigen : Codeproblem: Motor und Sensor
HI!
Ich hab ein Problem bei diesem Code:
list p=16f84a
include <p16f84a.inc>
init
bsf STATUS, RP0
movlw B'00000000'
movwf TRISB
bcf STATUS, RP0
clrf PORTB
main
btfsc PORTA,2
call right
btfsc PORTA,3
call left
call forward
goto main
left
bcf PORTB,0
bcf PORTB,1
bsf PORTB,2
bcf PORTB,3
return
right
bsf PORTB,0
bcf PORTB,1
bcf PORTB,2
bcf PORTB,3
return
forward
bsf PORTB,0
bcf PORTB,1
bsf PORTB,2
bcf PORTB,3
return
end
Und zwar sind am Port RA2 und RA3 einfache Sensoren mit einem TTL Pegel und an RB0 bis RB3 ein L293 mit 2 Motoren.
Je nach dem welcher Sensor einen High Pegel macht, soll dann ein Motor stehen bleiben, aber es tut sich gar nix. Nur einer der Motoren dreht sich und je nach dem wie Pegel der Eingänge steht, dreht sich dieser einmal schnell, einmal langsam und einmal sehr langsam.
Ich hoffe ich konnte mein Problem schildern und dass mir jemand helfen kann. Zum evtl leichterem Verständnis hab ich den Schaltplan eingefügt. Es ist ein einfacher Roboter der einer Linie nachfahren soll. Die Sensoren sind zZ einfache Tasten weil ich dachte dass es daran liegen könnte, aber es wars nicht.
Hallo djdune!
Ich habe zuerst Dein Schaltplan kurz Angeschaut und habe ich festgestellt, das der L293D nicht richtig beschalted ist. Meine Meinung nach müssen die alle Gnd pins mit 0V verbunden werden. Bei Dir sind sie nicht.
http://www.datasheetarchive.com/
Hol Dir, bitte, ein Datenblatt fur L293D und bringe seine Bechaltung zur Ordnung. Wenn Hardware OK wird und die Motoren werden bei Steuerung des L294 direkt mit Tasten richtig laufen, dann schaue ich mir den Code an. (Wenn´s immer noch nicht funktioniert.)
MfG
Hallo
Meine Meinung nach müssen die alle Gnd pins mit 0V verbunden werden.
Sind die nicht intern verbunden? Alle anschliessen hätte dann rein thermische Gründe.
Mal nachmessen...
Gruess
Fritzli
Sind die nicht intern verbunden? Alle anschliessen hätte dann rein thermische Gründe.
Also soweit ich weiß, ist es doch so, dass 2 Gnd zu Vss1 und 2 anderen zu Vss2 gehören. Irgendwo hab ich gelesen, dass es wichtig ist alle zu verbinden.
Ich muss aber sagen, dass ich es nicht durchgemessen habe.
Das ist nicht das Problem. Ich hab das jetzt auf einem Digital-Übungskoffer aufgebaut. Auch wenn ich Leds an die Ausgänge schließe, kommt je nach Schaltzustand das Bitmuster raus, dass eigentlich sein sollte
Hallo djdume!
Sorry! Das mit dem Gnd stimmt, ich habe das übersehen. Jetzt habe ich das Datenblatt noch mal ganz genau angeschaut und stimmt noch mit Vs und Vss (pin10 und Pin20 von L293D) nicht. Enweder ist es falsch verbunden, oder stimmt die Pinbeschreibung auf Deinem Schaltplan nicht. Die beiden pins (10 und 20) müssen mit +5V verbunden werden. Laut Deinem Schaltplan pin10 ist mit pin 9 vom PIC verbunden. Das pin 20 habe ich auf Deinem Schaltplan gar nicht gefunden. Prüfe das noch, bitte.
MfG
Servus,
@PICture: Vs ist doch Pin 8 und Vss Pin 16.
Pin 10 is In 3 und das ist meiner Meinung nach korrekt.
Ich hab mir mal das Datenblatt, das du verwendest angeschaut. Das sind zwei Gehäuse drin.
SO(12+4+4) das ist aber ein L293DD und
PDIP(12+2+2) das ist der L293D
Versuch mal alle 4 Gnd pins auf masse zu legen, vielleicht ist es ja doch so, dass die nicht verbunden sind. (Werde das morgn (eigentlich heute) mal Probieren.
Ansonsten seh ich von der Ansteuerung mit deinen Routinen kein Problem, obwohl ich von PIC ned viel ahnung hab.
Müsste Vdd am PIC nicht auch auf der Versorgung hängen (nehm mal an, ist nur ned in der Zeichnung eingetragen.)
Hallo beast!
Irgendwie verstehe ich das ganze nicht mehr. Ist das nicht L293D wie auf dem Schaltplan? Ich habe ein Datenblatt von
www.datasheetarchive.com
für L293D angeschaut. Was für ein IC ist tatsächlich in der Schaltung?
MfG
Ich hab ja alles richtig belegt. Wenn ich per Taster die Pegel anlege funktioniert das ja mit beiden Motoren in beide Richtungen. Es ist ja nur der Code der Probleme macht.
@ PICture
das ist ein L293D den er verwendet den mit einem PDIP16-gehäuse.
@djdune sry, dann hab ich dich falsch verstanden und kann dir leider nicht helfen.
Hallo djdune!
Ich freue mich für Dich, dass die Hardware schon OK ist. Damit hast Du schon die Hälfte geschafft. Dein Code ist nicht lang, deswegen ist es schneller ihn neu zu schreiben statt Fehler suchen. Ich würde Dir empfehlen in kleinen Stücken schreiben und jedes Stück gleich prüfen, nächstes Stück schreiben, prüfen usw. Obwohl ich schon bischen Erfahrung habe mache ich immer so. Wenn ich jetzt Dein Code auf Fehler prüfen sollte, dann wird die Beschreibung, wie die Motoren laufen sollen, länger als der Code, oder?
Viel Spass und Erfolg!
MfG
Stimmt. Ich glaub ich werd PicC verwenden, Maschinencode ist net ganz so meins
genau! Jeder soll die Sprache benutzen, die ihm gefällt und mit der er schon einiges geschrieben hat. Ich will auch ein bischen mit Basic probieren, aber das scheint mir kompliezierter als ASM zu sein.
Ich bin mir sicher das Du es selber schaffts. Ich war auch mehrmals verzweifelt und habe hier im Forum gefragt, aber leider (oder zum Glück) hat mir keiner beantwortet. Dann ist mir was neues eingefallen und ich habe meine Frage schnell gelöscht...
MfG
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.