PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Attiny13 zur Servoansteuerung



Juergen H.
16.09.2012, 15:52
Hallo,

mein Name ist Jürgen und ich möchte mich in der Programmierung versuchen.
Die üblichen "Spielchen" mit LED habe ich hinter mir. Es hat soweit auch alles geklappt.

Nun wollte ich eine Modellbau-Servo ansteuern. Leider klapt das so ganz uns garnicht.

Ich wollte ein Programm schreiben wo zwei Positionen im wechsel angefahren werden.

Verwenden wollte ich einen ATTiny13. Beispiele habe ich einige gefunden. Nur alle funktionieren nicht.

Daher hier nun mein Quelltext, den ich soweit wie möglich schon abgespeckt habe.

$regfile = "ATtiny13.dat"
$crystal = 9600000
$hwstack = 10 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 20 ' default use 40 for the frame space
Config Servos = 1 , Servo1 = Portb.1 , Reload = 2
Config Pinb.1 = Output
Enable Interrupts
Do
Servo(1) = 70
Waitms 10000
Servo(1) = 100
Waitms 10000
Loop
End


Leider fährt das Servo nur in einen Endstellung und versucht noch weiter zu drehen.

Mit dieer zeile "$crystal = 9600000" habe auch schon einwenig rumgespilet. Leider ohne Erfolg.

Muß ich im Bascom auch noch was umstellen?

Für jede Antwort Dankbar

Jürgen

Searcher
16.09.2012, 17:32
Mit dieer zeile "$crystal = 9600000" habe auch schon einwenig rumgespilet. Leider ohne Erfolg.


$crystal MUSS nach dem tatsächlichen Systemtakt gesetzt werden. Dazu gibt es gerade ein Parallelthread: https://www.roboternetz.de/community/threads/59229-Tiny13(A)-PWM-crystal-Komisches-Verhalten (https://www.roboternetz.de/community/threads/59229-Tiny13%28A%29-PWM-crystal-Komisches-Verhalten)



Config Servos = 1 , Servo1 = Portb.1 , Reload = 2

Der Reload Wert ist zu klein. Hier auch dazu 'ne schöne Erklärung:
https://www.roboternetz.de/community/threads/32994-Servo-funktioniert-einfach-nicht?p=312229&viewfull=1#post312229

Gruß
Searcher

Juergen H.
17.09.2012, 19:52
Hallo Searcher,

vielen Dank für die Antwort.

Ich bin zwar sicherlich nicht der Experte in Sachen Elektrotechnik, aber ganz so wie es mir hier passiert habe ich noch nicht gehabt. Mir macht das ganze hier(Bascom) irgendwie nicht den tollsten Eindruck.

Von Vorn
Eingentlich wollte ich nur eine Platine nachbauen http://sammler.blue-parrot.de/projekte/mobaservo/index.php

Weil ich aber gerne das mache was ich nicht so gut kann:) dachet ich mir, fängste das Tema mal von Vorne an.

Also bei Reichelt bestellt "Programmer f. AVR,STK500,ATmega,ATtiny,AT90", gedacht, nimmste was fertiges, Problem kommen bestimmt noch. USB sollte es auch sein. Die anderen Port haben Ihre dienste getan, soll heißen sind veraltet.

Bascom viel mir bei den Internet nachforschungen immer wieder auf, OK, nimmste, wenn das so viele haben.

Also nach der Lieferung von Reichelt sammt einiger ATiiny13, lost geht's.

Treiber und Bascom installiert und die LED`s sollten leuchten. Schade, so schnell schießen die Preußen nicht.

Nach einwenig Internetsuche Atmel Studio 6.0 installiert, wollte ich schreiben. Erst Updates. (XP-Rechner SP2 war mal)

Dabei sind leider andere Programme .... .

Es geht so weiter.

Seit zwei Woche/Vor zwei Woche habe ich dann endlich die ersten LED's leuchten gesehen.

Ja dann kann es ja jetzt losgehen mit dem eigentlichen Thema Modellbau Servos. Das Programm geladen geflascht und dann,
alle Programme die ich getestet haben gingen nicht Richtig. Aber wozu gibt es Internet.

Da habe ich schnell, dank Dir, eine Antwort erhalten. Also das ganze gelesen, wieder mal nur, wenn überhaupt, die hälfte verstanden. Aber ich denke die Fusebits müssten, neben mir, als Übeltäter feststehen.

Heute wollte ich dann frisch ans werk und, der Rechner hat sich aufgehangen, ganz. Also alles von Vorn.

Tut mir leid wenn ich euch damit Langweile aber das ganze nervt mich ziemlich. So tief wollte ich eigentlich nicht einsteigen.
Ein paar ideen aus dem internet für die eigenen zwecke "verfeinern" und gut ist.

Ich schreibe übrigens wirklich icht oft solche langen Text. Bin gerade am deinstallieren der Programme...


Gruß
Jürgen


PS. Nein, ich gebe nicht auf. :)

Jetzt hats auch noch zu lange gedauert. Der Admin hat mich rausgekegelt.

021aet04
17.09.2012, 20:14
Im Link habe ich eine Zip gefunden. Diese enthält 2 Softwäreversionen mit den C-Dateien, Makefiles, Hexfiles. Wenn du die Programme ohne Änerdung verwenden willst brauchst du nur die Hexfiles auswählen (je nachdem was du willst) und diese in den µC schreiben (flashen). Der µC sollte ab diesem Zeitpunkt einsatzbereit sein. Du musst aber noch die Fuses richtig einstellen bzw kontrollieren. Diese stehen in den C-Dateien.

Wenn du etwas ändern willst öffnest du die C-Dateien (mit dem AVR Studio, nicht mit Bascom) und passt das Programm an. Du musst das Programm übersetzen und anschließend in den µC schreiben, da brauchst du noch die richtige makefile (die beim Download dabei ist).

MfG Hannes

Juergen H.
17.09.2012, 20:27
Hallo Hannes,

das die Programme in C sind habe ich bemerkt.
In meinen Größenwahn wollte ich die in Bascom "Neu" schreiben.
Z.Z installiere ich die Programme wieder neu.
Ich werde es auf jedenfall weiter versuchen, obwohl ich von den Fuses keine Ahnung habe.
Von den möglichen Frequenzen habe ich immer 3 zur auswahl. Also spätesten im dritten Anlauf sollte es klappen, HOFFE ICH:p
Dann noch die Wiederholrate, ... .


Gruß

Jürgen

Juergen H.
17.09.2012, 21:27
Ganz so einfach ist es dann doch nicht.
Kann mir jemand sagen ob das so passt.23280


Gruß

Jürgen

Searcher
17.09.2012, 21:45
Hi Jürgen,
nach Deinem screenshot läuft Dein Tiny mit 1,2MHz weil das Fuse bit E (Divide by 8 ) auf ON steht und der Oszillatortakt auf 9,6Mhz.

Um den Tiny auf 9,6MHz zu stellen müstest Du auf die Zeile mit dem Fusebit E klicken und auf OFF stellen. Danach müßte rechts der WRITE FS Button "bedienbar" werden. Mit dem schreibst Du die Änderung zum µC.

Gruß
Searcher

Searcher
18.09.2012, 11:41
Hallo Jürgen.
hab mir jetzt mal Deinen Frust von oben in Ruhe durchgelesen. Ich glaub das hat jeder Anfänger mehr oder minder stark durchgemacht ;) . Ich bin sicher, wenn Du da mal durch bist wirst Du viele Einsatzmöglichkeiten von µCs an der Modellbahn ??? finden und froh sein, daß Du nicht aufgegeben hast.

Nochmal zum Programm: Weil ich gerade einen Testaufbau habe, hab ich den SERVO Befehl in BASCOM auf einem anderen µC (Mega88A) ausprobiert - hab kein Tiny13. Sollte aber egal sein. Ich bin auch gefrustet :( , da ich mit unterschiedlichen Taktfrequenzen, Reload Werten und Werten im Servo Array, SERVO(1), die Pulsweite nicht wirklich vorher bestimmen kann. Außerdem bringt mir der Befehl die WAIT Statements anscheinend aus dem Tritt (Wartezeiten stimmen nicht mehr)

Bei 8MHz Takt und Reload Wert von 5 gibt es eine Servosignalfrequenz von ca 50Hz.
Für SERVO(1) tun es dann die Werte 100 bzw 200 für 1ms bzw 2ms Pulsweite.
Für die 9,6MHz des Tiny13 würd ich auch mit den Werten beginnen zu probieren.

Verändere ich nur den Reload Wert, ändert sich gleichzeitig Signalfrequenz und Pulsweite bei gleichen SERVO(1) Werten :(

Wichtig ist eine gute starke, möglichst vom µC unabhängige Stromversorgung des Servos!

Ich benutze den SERVO Befehl selbst normalerweise nicht, sondern schreibe mir meine eigenen Routinen in BASCOM. Dafür ist der Tiny13 aufgrund seines geringen Speichers und Abwesenheit eines 16Bit Timers nicht so gut geeignet - geht wohl aber eben umständlich.

Welche BASOM Version benutzt Du? Meine ist die 2.0.5.0 Demo. Könnte sein, das der SERVO Befehl sich in unterschiedlichen Versionen anders verhält.

Insgesamt bin ich mit BASCOM zufrieden, trotz einiger Macken, die man umgehen kann.

(Hoffentlich hab ich jetzt nicht nur Mist getestet)
Viel Erfolg
Gruß
Searcher

Juergen H.
18.09.2012, 19:06
Hallo Searcher,

vielen Dank für Deine Hilfe. Durch Deine Hilfe habe ich es geschaft, mit folgenden Programm

$regfile = "ATtiny13.dat"
$crystal = 9600000
$hwstack = 10 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 20 ' default use 40 for the frame space
Config Servos = 1 , Servo1 = Portb.1 , Reload = 5
Config Pinb.1 = Output
Enable Interrupts
Do
Servo(1) = 65
Waitms 300
Servo(1) = 230
Waitms 200
Loop
End

und diesen Fuseligen Fu..23287

und dieser Version

23289

Schnell speichern bevor der Admin mich rauswirft:strom

Juergen H.
18.09.2012, 19:12
DAs Servo läuft wunderbar von links nach rechts. Nicht bis zum Ende, das Servo brauche ich ja noch.

Jetzt werde ich versuchen eine Taste einzubauen.
Dann dei Endwerte von Aussen zu manipulieren.
Dann.... .

Ich hoffe Du hast recht und ich habe noch einige Einsatzmöglichkeiten finde. Ideen hätte ich schon genug, nur sollte es dann nicht so früh so ..... ausehen.

Nochmals Danke für Deine Hilfe.

An den Admin: Im Vorherigen Betrag sollte ein Smilie stehen, sorry.

021aet04
18.09.2012, 19:31
Die einzelnen Posts kannst du selbst bearbeiten.

Beim Anmelden kannst du normalerweise auswählen "angemeldet bleiben" (Checkbox), dann wirst du nicht automatisch ausgeloggt. Dann kannst du solange Online bleiben bis du dich abmeldest oder die Verbindung trennst.

Schön wenn es jetzt funktioniert.

MfG Hannes

Juergen H.
18.09.2012, 19:39
Taster Klappt :p

Searcher
19.09.2012, 12:33
Taster Klappt :p

:Strahl
Daumen hoch.

Gruß
Searcher