Hallo zusammen, bin schon den ganzen Tag dabei, ein Multiplexservo über einen 4433 anzusteuern. Nachdem ich sämtliche Tuts wie auch Google durch habe, kann ich den Fehler nicht finden. Im Anhang ein Bild des grundsätzlichen Aufbaus. Folgende Sympthome treten auf: Beim einschalten fährt das Servo in eine Richtung (links) und nach einer Laufzeit von 2-3 sek. bricht alles zusammen (PWR LED aus). Das Servo steht nicht im Anschlag ! Ich denke mal, das es nicht am Netzteil liegt, denn es ist ein PC-Netzteil (5V / 7A). Liefert also für ein Servo genug. Folgenden code verwende ich: $regfile = "4433def.dat" $crystal = 4000000 Ddrd = &B11111111 Do Portd = &B00000000 Waitms 20 Portd = &B11111111 Waitms 1.5 Loop End Hat jemand eine Idee ? Gruß, Andre.
Hallo Andre: Verwende doch den Befehl -- Config Servos -- siehe online hilfe des Compilers- Der Transistor ist falsch beschaltet ;-) Basis ist OK. Emitter nach Masse (pfeil(der Emitter) zeigt nach aussen Kollektor nach VCC,bez. an den Servo (open Collector) der Transi ist ein NPN Typ mfg ThomasB
Hallo Thomas, in der schnelle ist mir das nicht aufgefallen im entwurf. Config Servos habe ich schon benutzt, bzw. das Beispiel welches dabei ist. Im Anhang findest Du eine überarbeitete Skizze. Diese sollte doch funktionieren, oder ? Das komische ist jetzt, das das Servo immer nur in eine Richtung läuft, anschliessend bricht alles zusammen. Ist es auch möglich, das Servo direkt über den PB0 anzusteuern ? Gibt es irgendwo Schaltpläne ? Für Hilfe wäre ich sehr dankbar. Gruß, Andre.
hallo Andre: Die Servos kannst du direkt an die Port hängen Siehe beigefügte Dateien im ZIP-Format.
Hallo Thomas, hab das Problem gefunden. Es lag definitiv am Netzteil. Anscheinend reichte mein 10 Jahre altes Netzteil nicht aus, um ein popeliges Servo anzutreiben. Nachdem ich ein Aktuelles ATX angeschlossen habe, gings. Folgenden Code habe ich verwendet: .include "4433def.inc" .def sp = R16 rjmp main main: ldi sp,LOW(RAMEND) out SPL,sp ldi r16, 0b00000001 out DDRB, r16 loop: rcall delay_20 ldi r16, 0b00000001 out PORTB, r16 rcall delay_1_5 ;delay von 1.5ms (optional delay_1 für 1ms) ldi r16, 0b00000000 out PORTB, r16 rjmp loop delay_1_5: ldi R17, $09 WGLOOP5: ldi R18, $DD WGLOOP6: dec R18 brne WGLOOP6 dec R17 brne WGLOOP5 ldi R17, $02 WGLOOP7: dec R17 brne WGLOOP7 ret delay_20: ldi R17, $86 WGLOOP0: ldi R18, $C6 WGLOOP1: dec R18 brne WGLOOP1 dec R17 brne WGLOOP0 nop nop ret delay_1: ldi R17, $1F WGLOOP10: ldi R18, $2A WGLOOP11: dec R18 brne WGLOOP11 dec R17 brne WGLOOP10 nop ret delay_1sek: ldi R17, $24 WGLOOP20: ldi R18, $BC WGLOOP21: ldi R19, $C4 WGLOOP22: dec R19 brne WGLOOP22 dec R18 brne WGLOOP21 dec R17 brne WGLOOP20 ldi R17, $01 WGLOOP23: dec R17 brne WGLOOP23 nop ret Gruß, Andre.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.