Servo Ansteuerung mit Bascom

Gast #3834177
Lesenswert?
• ▲
▼
Guten Tag.

Ich habe folgendes Problem:

Ich möchte einen Servomotor(SG90) mit einem Atmega 8 ansteuern.
Der Atmega 8 bekommt von mir 8 Eingänge wo ich die Einzelnen Winkel 
einstellen möchte.
Mein Code:



$regfile = "m8def.dat"
$crystal = 8000000
Config Servos = 1 , Servo1 = Portc.5 , Reload = 9

Config Portc.5 = Output
Config Portc.4 = Input
Config Portc.3 = Input
Config Portc.2 = Input
Config Portc.1 = Input
Config Portc.0 = Input
Config Portb.5 = Input
Config Portb.4 = Input
Config Portd.0 = Input

Enable Interrupts

'Pullups
Pinc.4 = 0
Portc.4 = 0
Portc.3 = 0
Portc.2 = 0
Portc.1 = 0
Portc.0 = 0
Portb.5 = 0
Portb.4 = 0
Portd.0 = 0

Dim Pos As Word

Do
   If Pinc.3 = 1 Then Pos = 65
   If Pinc.2 = 1 Then Pos = 80
   If Pinc.1 = 1 Then Pos = 95
   If Pinc.0 = 1 Then Pos = 110
   If Pinc.5 = 1 Then Pos = 125
   If Pinc.4 = 1 Then Pos = 140


   Servo(1) = Pos
   Waitms 100


Loop



Die Eingänge werden nur einzeln auf high gesetzt, niemals 2 zusammen.

Das Problem, der Servo macht absolut was er will.

Wo liegt mein Denkfehler?
Gast #3834265
Lesenswert?
• ▲
▼
Cyblord nölte:
>Das ist BASCOM, da ist doch alles schon drin für die Servoansteuerung.
>Allerdings scheint der TE sogar dafür noch zu doof.

Richtig muss es heißen:

Das ist CYBLORD, der ist immer schon drin im Forum.
Allerdings scheint der sogar noch so doof, selbst dann noch die Schnauze 
aufzureißen, wenn er das Problem nicht im Mindesten überblickt.
#3834547
Lesenswert?
• ▲
▼
Hallo,
ich nehme auch an, dass Du einen RC-Servo meinst. Dann ist in Deinem 
Programm sicher die Taktfrequenz zu hoch. Versuche mal, den 
config-Befehl um mode zu erweitern.
Sicher bin ich nicht, weil ich bisher die PWM-Ausgänge für Servos 
benutzt habe. Da hat man mehr Experimentiermöglichkeiten, ist aber auf 
zwei Ausgänge festgelegt.
dolivo
(Firma: Vescomp) #3834601
Lesenswert?
• ▲
▼
Franz schrieb:
> If Pinc.3 = 1 Then Pos = 65
>    If Pinc.2 = 1 Then Pos = 80
>    If Pinc.1 = 1 Then Pos = 95
>    If Pinc.0 = 1 Then Pos = 110
>    If Pinc.5 = 1 Then Pos = 125
>    If Pinc.4 = 1 Then Pos = 140
>
>    Servo(1) = Pos
>    Waitms 100

 Mal abgesehen von diesem Fehler:

spess53 schrieb:
>>If Pinc.5 = 1 Then Pos = 125
>     ^^^^^^
> Erzähle mal, wie das zusammenpasst.

 Ich glaube BASCOM hat auch MODE Befehl, also:
1
  Config Servos = 1 , Mode = Servo , Servo1 = Portc.5
 sollte hinhauen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.