Hallo zusammen, Ich bin Anfänger im Bereich AVR-Programmierung. Bisher hatte ich zwar schonmal öfters veröffentlichte Projekte umgesetzt (OpenDCC.org), aber jetzt will ich mal was eigenes machen. Ziel ist folgendes: Ich habe einem Servo die Elektronik entfernt und will mit 2 Tastern zwischen 2 festgelegten Positionen wechseln: Taster 1 -> Position1 Taster 2 -> Position2 Mit einem Tiny13 in Verbindung einer H-Bridge funktioniert das auch wunderbar. Nun möchte ich das Erreichen der Soll-Position auch elektronisch weitergeben, d.h. 2 Ausgänge, von denen einer bei Erreichen der Sollposition den Wert 0 ausgibt. Dafür hat der Tiny13 aber leider einen Anschluß zu wenig. Ich brauche folgende Anschlüsse: 2 Eingänge für Taster 2 Ausgänge für Rüchmeldung 2 Ausgänge für Motorsteuerung 1 Analoger Eingang für das Auslesen der IST-Position. Ich hab noch einen Tiny2313, von dem ich aber irgendwo gelesen habe, dass er keinen ADC hat (bin mir aber nicht sicher, ob ich das so richtig verstanden habe) Nun weiß ich leider nicht, wie ich den richtigen AVR aussuchen kann. Er soll: 1. die nötigen Anschlüsse haben 2. billig sein 3. leicht zu beschaffen sein 4. ohne externe Beschaltung laufen (interner Osc.) Vielen Dank im Voraus für die Hilfe Gruß Christian
ATtiny24 oder ATtiny84A eventuell. Schau mal hier: http://www.mikrocontroller.net/articles/AVR_Typen#Vergleichstabelle.28n.29_.2F_Ausstattung
um vielleicht einen Taster zu sparen einen counter hochzählen lassen und wenn dort 1 drine steht fahre zu Postion1 wenn 2 fahre zu Postion2 sollte der Taster nicht länger als 1s betätigt worden sein wird die Aufgabe ausgeführt
Die beiden Taster über Widerstände an einen Pin hängen und per ADC abfragen?
Ist Minimalistik hier relevant? Wenn nicht, dann wirds die eierlegende Wollmilchsau Mega88 auch tun. Von dieser Sorte kann man sich auch mal 2-3 zulegen. Klar ist der dann vielleicht zu gross - na und?
:
Bearbeitet durch User
Hi, Um mal NICHT einen einzelnen Typ zu nennen, sondern zu zeigen wie man so eine Entscheidung in der Regel treffen sollte hier mal zwei mögliche Wege: 1. Die Entscheidung nach Bezugsquelle: (Bei Hobbyisten wohl am weitesten Verbreitet und dort auch durchaus Sinnvoll) Du schaust bei deinem Lieblingslieferanten (Reichelt, Conrad, Mouser - oder der Elektronikladen ums Eck) nach was der an Atmel AVR überhaupt im Programm hat. Dann gehst du diese in der Reihenfolge von Günstig nach Teuer der Reihe nach durch bis du zu einem Typ kommst der alles hat was du brauchst. Alternativ nimmt man einfach gleich einen etwas Leistungsfähigeren und legt sich davon eine gewisse Menge aufs Lager) 2. Die Entscheidung nach Funktion: Praktisch jeder µC Hersteller bietet eine parametrische Produktsuche auf seiner Homepage an. Dort kann man die geforderten Eigenschaften Definieren und bekommt dann die geeigneten µC Angezeigt. Besonders bei sehr komplexen Anforderungen wird das immer Interessanter. Für Atmel findest du das hier: (Falls der Link funktioniert) http://www.atmel.com/v2pfresults.aspx#%28actives:!%288238,8394,8362,8282,8431,8300,8358,8392,8378,8445,8236,8449,8474,8248,8264,8447,8256,8254,8286,8462,8429,8458,8466,8400,8302,8278%29,data:%28area:%27%27,category:%2734864%27,pm:!%28%28i:8238,v:!%280,18%29%29,%28i:8394,v:!%280,20%29%29,%28i:8362,v:!%282,40%29%29,%28i:8282,v:!%280,1,2,3,4,5,6,7,8,9,10%29%29,%28i:8431,v:!%280,36%29%29,%28i:8300,v:!%281,9%29%29,%28i:8358,v:!%281,67%29%29,%28i:8392,v:!%280,1%29%29,%28i:8378,v:!n%29,%28i:8445,v:!%280,3,4,5,6,7,8%29%29,%28i:8236,v:!%280,30%29%29,%28i:8449,v:!%280,10%29%29,%28i:8474,v:!%280%29%29,%28i:8248,v:!%280,1%29%29,%28i:8264,v:!%280,5%29%29,%28i:8447,v:!%280,1%29%29,%28i:8256,v:!%281,2,3,4%29%29,%28i:8254,v:!%281,15%29%29,%28i:8286,v:!%280,3%29%29,%28i:8462,v:!%280,8%29%29,%28i:8429,v:!%281,10%29%29,%28i:8458,v:!%280,5%29%29,%28i:8466,v:!%281,2,3,4%29%29,%28i:8400,v:!%280,20%29%29,%28i:8302,v:!%280,1,2%29%29,%28i:8278,v:!%280,1,2%29%29%29,view:list%29,sc:1%29 Dort definierst du deine Randbedingungen, also Controllerserie AVR, mindestens 7 IO und von den 7 muss mindestens einer ein AD Kanal sein. Optional kannst du auch noch Höchstwerte vergeben, so das er dir beispielsweise µC mit mehr als 20Pinne auch nicht mehr anzeigt usw. (Leider bietet der Atmel Selector KEINE Auswahl nach (Großhandels-)Preis oder Gehäuseform) Dann die Infraekommenden µC mit der Liste der für DICH verfügbaren µc vergleichen und ein Produkt bestellen was auf beiden Listen steht. Gruß Carsten P.S.: Das "Ich habe glaube ich gelesen das der keine ADC hat" ist natürlich für die Auswahl schon einmal ganz schlecht. Ob diese Aussage für deinen Tiny2313 wirklich korrekt ist hättest du doch in wenigen Sekunden selbst herausfinden können. Ein Datenblatt solltest du zumindest doch lesen können, Oder? Aber um das vorwegzunehmen: NEIN, Der 2313 hat tatsächlich keinen ADC
:
Bearbeitet durch User
Der Tiny2313 hat tatsächlich keinen ADC. Auch hat der Typ noch die "alte" Pinbelegung mit GND/VCC an gegenüberliegenden Ecken - den Typ sollte man also für was neues eher meiden, weil die Entkopplung der Versorgung nicht so einfach und gut geht. Das ist mehr ein Ersatz für alte AT90S2313 oder 1200. Leicht zu beschaffen und billig ist eine Frage der Quelle - also da nachsehen und einen mit genügend Pins finden - einen internen Oszillator haben alle aktuellen Tyen, einen AD haben die meisten Typen nur gerade nicht der 2313. Eine Alternative wäre ggf. noch der Tiny261 mit 20 Pins.
Wow, nach ein paar Minuten sooo viele Antworten, und alle sind hilfreich! Ich in begeistert. Ich denke, ich werde mich für den Tiny24 entscheiden. Die Möglichkeit die beiden Taster über einen Port laufen zu lassen ist nicht der richtige Ansatz, da die Taster letztenendes keine Taster sein werden, sondern Logische Eingänge, die nunmal vorhanden sind. Genauso auch die Ausgänge für die Endposition. Der Tiny24 kostet bei Reichelt 1,10 in der SMD-Version und erfüllt somit (incl. des Preises) alle Anforderungen. Nochmals Danke.... Ihr seid Spitze.
Wenn du den Tiny24 willst, dann nimm doch gleich den 84. Der ist identisch, aber mit mehr Flash, Ram und EEprom. Das schadet nicht. Preislich gibt es sich auch nicht viel. Genauso wie wenn du mal einen 8 Beiner willst, dann nimmt nicht den 25 oder 45 sondern gleich den 85. gruß cyblord
Christian R. schrieb: > Der Tiny24 kostet bei Reichelt 1,10 in der SMD-Version und erfüllt somit > (incl. des Preises) alle Anforderungen. Das ist nicht der alte ATtiny24, sondern zum Glück der neuere ATtiny24A. Und cyblord hat recht: besser ist der größere ATtiny84A - sogar billiger für 1 Euro (DIP-Version): https://guloshop.de/shop/Mikrocontroller/ATtiny84-A::34.html Würde den nehmen, der hat 4mal so viel Flash und auch mehr RAM. Ein Blick lohnt sich auch auf den ATtiny861A mit ebenfalls 20 Pins wie der ATtiny2313A (bzw. ATtiny4313 ohne A), dafür aber mit ADC. Und weil du den internen Oszillator nehmen willst: der ATtiny861A ist neben dem ATtiny85 (und den baugleichen Typen mit weniger Speicher) der einzige, der intern ganz normal mit 16 MHz getaktet werden kann. Die anderen schaffen alle nur 8 oder 9.6 MHz
Oder natürlich der ganz neue Tiny841, welcher eine Erweiterung zur 24/44/84 Reihe darstellt. Mit 2x UART und solche Späße ;-) Grundsätzlich würde ich, wenn das Gehäuse/Pinanzahl/Peripherie feststeht, immer schauen einen möglichst aktuellen Controller zu nehmen. Sonst entwickelt man erst auf einem Älteren Modell und ärgert sich später, weil man in gleicher Größe und zum gleichen Preis mehr Leistung und Peripherie bekommen hätte. gruß cyblord
:
Bearbeitet durch User
Hallo nochmal, in meinem Projekt geht es darum, bei meiner Modellbahn die herkömmlichen Weichenantriebe durch Servomotoren zu ersetzen. Da es ca 35 Stück sind, und die einmal eingesetzte Elektronik wahrscheinlich nicht mehr verändert wird, ist hier das ganze als minimalistische Lösung zu betrachten. Damit meine ich nicht die Bauteilgröße, sondern den Preis. Zwischenzeitlich bin ich auf den Tiny26 gestossen (http://www.reichelt.de/Atmel-Attiny-AVRs/ATTINY-26L8-SO20/3/index.html) der mit 49Cent preislich wohl kaum zu unterbieten ist (oder täusche ich mich da?). Dazu kommt dann ein L293D als Motortreiber 3-4 Widestände und ein Billigservo und schon kann ich die tatsächliche Weichenstellung an den PC zurückmelden. Gruß Christian
Dass der 2313 keinen ADC hat muss nicht unbedingt hinderlich sein. Denn du kannst die Position des Servos auch so abfragen, wie es der C64 mit Joysticks gemacht hatte:
1 | Poti 1k |
2 | VCC o----[===]---[===]---+-----||----| GND |
3 | | |
4 | zum AVR |
Programmiere den I/O Pin als Ausgang mit Pegel LOW. Dann programmiere ihn als Eingang und warte ab, bis er HIGH ist. Die Zeit sagt Dir, in welcher Position der Motor steht.
Christian R. schrieb: > einen Anschluß zu wenig. Ich brauche folgende Anschlüsse: > > 2 Eingänge für Taster Nein, brauchst du nicht. Ein IO genügt, um auch mehrere Taster abfragen zu können. Um zwei Taster abfragen zu können, benötigst du nur einen Kondensator und zwei Widerstände als zusätzliche Beschaltung. Ansonsten: Tiny24.
Der Tiny26L8 ist vermutlich ein Restposten, und daher so günstig. Das es nur die 8 MHz Version (dafür low Voltage) ist sollte hier auch nicht stören. Im Prinzip geht der, und reicht auch vom Speicher. Wenn man schon recht genau weiss was man braucht muss es ja auch kein µC mit 8 K sein. Man muss aber damit rechnen, dass man in z.B. 3 Monaten oder 1 Jahr oder so den Tiny26 nicht mehr gut bekommt, sondern nur noch den Nachfolger Tiny261 oder ähnlich. Ein bisschen anders ist der und braucht ggf. eine Anpassung beim Programm - die Hardware kann aber so bleiben. Bei der HW wäre noch zu überlegen, ob man ggf. die Elektronik im Servo drin lassen kann, und parallel den Poti für die Position noch vom µC auslesen. Es hängt von der internen Elektronik ab, könnte aber gehen.
Entgegen den anderen Postern wuerde ich zu einem Mega16 oder aeguivalent dh 16K code im TQFP44 oder DIP40 raten. Das Tiny Zeug ist unwesentlich guenstiger. Die Ersparnis ist fuer kleine Projekte mit weniger als 1000 stueck unwesentlich. Und hat fuer das naechste Projekt dann zuwenig Moeglichkeiten. Denn von einem Controller kauft man ja nicht einen sondern ein paar. Erst dann kann man das Schema copy/pasten, das Layout copy/pasten.
Christian R. schrieb: > Hallo nochmal, > > in meinem Projekt geht es darum, bei meiner Modellbahn die herkömmlichen > Weichenantriebe durch Servomotoren zu ersetzen. Da es ca 35 Stück sind, > und die einmal eingesetzte Elektronik wahrscheinlich nicht mehr > verändert wird, ist hier das ganze als minimalistische Lösung zu > betrachten. Damit meine ich nicht die Bauteilgröße, sondern den Preis. > > Zwischenzeitlich bin ich auf den Tiny26 gestossen > (http://www.reichelt.de/Atmel-Attiny-AVRs/ATTINY-26...) > der mit 49Cent preislich wohl kaum zu unterbieten ist (oder täusche ich > mich da?). Dazu kommt dann ein L293D als Motortreiber 3-4 Widestände und > ein Billigservo und schon kann ich die tatsächliche Weichenstellung an > den PC zurückmelden. > > Gruß > Christian Ja, sehe ich auch hast ADC und genügend Pins um noch mehr machen zu können (z.B. Signalanlage o.ä.). Ich würde mit dem USI TwoWire realisieren und da alle Weichen/µC dranhängen. Aber wozu brauchst Du bei SERVO eine Vollbrücke ?
kopfkratzer schrieb: > Aber wozu brauchst Du bei SERVO eine Vollbrücke ? Die braucht er deshalb, weil sein Servo keiner mehr ist, sondern bloß noch ein Getriebemotor mit angeflanschtem Poti. Er schrieb im OP, daß er die Elektronik aus dem Teil entfernt hat. Warum auch immer...
c-hater schrieb: > kopfkratzer schrieb: > >> Aber wozu brauchst Du bei SERVO eine Vollbrücke ? > > Die braucht er deshalb, weil sein Servo keiner mehr ist, sondern bloß > noch ein Getriebemotor mit angeflanschtem Poti. > > Er schrieb im OP, daß er die Elektronik aus dem Teil entfernt hat. Warum > auch immer... kopftisch OK dann mal z.B.: https://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung durchlesen und verstehen wie ein SERVO angesteuert wird um eine bestimmte Position zu halten ... Oder gibt's Weichen die "variable" Stellungen habe müssen, z.B. um eine Entgleisung herbeizuführen (selbst dann kann man die Stellung berechnen und einstellen) ? Kann natürlich auch sein das er selber verstehen will wie so ein SERVO angesteuert wird ?
Hallo, Ich habe mich dazu entschieden, die Servoelektronik rauszunehmen, weil die Billig-Servos permanent die Position nachregeln und somit 1. Strom verbrauchen und 2. Geräusche machen. Damit schien mir die einfachste Lösung zu sein, den Motor direkt anzusteuern und bei Erreichen der Endposition ganz abzuschalten. Trotzdem Danke für die Gedankenanstösse. Gruß Christian
Christian R. schrieb: > Hallo, > > Ich habe mich dazu entschieden, die Servoelektronik rauszunehmen, weil > die Billig-Servos permanent die Position nachregeln und somit 1. Strom > verbrauchen und 2. Geräusche machen. Damit schien mir die einfachste > Lösung zu sein, den Motor direkt anzusteuern und bei Erreichen der > Endposition ganz abzuschalten. > > Trotzdem Danke für die Gedankenanstösse. > > Gruß > Christian Das versteh wer will. Also man reißt die Elektronik und den Motortreiber raus, um ihn durch einen anderen zu ersetzen. Schlau. Natürlich regeln die Servos ständig nach, sollen sie ja auch. Weil ein Servo seine Position halten soll. Wenn man das nicht will, dann sendet man einfach keinen Servoimpuls mehr. Dann wird auch nichts mehr nachgeregelt und der Motor bleibt aus. Zumindest bei den guten alten analogen Servos in jedem Fall. Bei digitalen gibts ja noch so FailSave Geschichten. gruß cyblord
cyblord ---- schrieb: > Wenn man das nicht will, dann sendet man einfach keinen Servoimpuls > mehr. Ist eine Möglichkeit. Aber was bitte soll denn eine Servoelektronik nachregeln, wenn es sowieso schon die Sollposition erreicht hat. Entweder es hat die Sollposition, dann wird auch nicht nachgeregelt, oder es hat die Position nicht, dann regelt es nach. In beiden Fällen ist das ja eigentlich genau das, was man will. Wenn ein Servo knurrt, dann steht unter Umständen das Rückmeldepoti etwas schlecht oder es ist auf Anschlag gefahren worden. Letzteres wird auch nicht besser, wenn man es selbst ansteuert.
:
Bearbeitet durch User
Karl Heinz schrieb: > cyblord ---- schrieb: > >> Wenn man das nicht will, dann sendet man einfach keinen Servoimpuls >> mehr. > > Ist eine Möglichkeit. > > Aber was bitte soll denn eine Servoelektronik nachregeln, wenn es > sowieso schon die Sollposition erreicht hat. Das kommt halt dann wenn die Belastung für das Servo zu hoch ist, oder man in der Tat extreme billig Servo erwischt hat. Wobei hier der Kaufpreis nicht mal entscheidend ist. Es gibt hier sehr ordentliche billige Servos. Habe auch schon Modellflugzeuge gesehen, da waren innen 8 Digitalservos, immer 2 gegeneinander verspannt. Das war wie im Bienenkorb das Geräusch. Naja aber man hat minimales Spiel erkauft durch hohen Stromverbrauch und kurze Servolebenszeit. gruß cyblord
Vielleicht ist auch das Signal verrauscht (Schlechte Qualität der Versorgungsspannung oder Jitter?) und das Servo macht deswegen "Geräusche". Jedenfalls finde ich auch, dass das Vorgehen etwas sinnbefreit ist ;-)
Nein, ein analog Servo schnattert unter Last. Die Nachregelung wird alle 50Hz gerechnet und ausgefuehrt. Ein Digitalpot schnattert nicht, weil der auch regeln kann, ohne ein steuersignal zu bekommen.
Siebzehn mal Fuenfzehn schrieb: > Nein, ein analog Servo schnattert unter Last. Die Nachregelung > wird alle > 50Hz gerechnet und ausgefuehrt. Ein Digitalpot schnattert nicht, weil > der auch regeln kann, ohne ein steuersignal zu bekommen. Von Last habe ich nichts gelesen, aber Recht hast du natürlich schon. Du meinst "Digitalservo" nicht "Digitalpot"?
Erklärst du mir mal, wo bei einer korrekt gestellt Modellbahnweiche eine 'Last' her kommt?
Wenn die Servos nachregeln ist das Stellsignal nicht sauber. im Zweifel Servo Stellen und Versorgungsspannung wieder abschalten. dann macht der kein mux mehr. wird die Weiche wieder umgefahren, Saft drauf umfahren wieder Abschalten.
Hallo, nach meiner anfänglichen Freude über die Rege Teilnahme an diesem Thread verstehe ich nun die abweichende Diskussion nicht mehr. Natürlich wäre das Ansteuern des Servos im original-Zustand kein Problem und natürlich kann ich dann den Motortreiber sparen.... Aber das ist hier doch gar nicht gefragt. Ich hatte eingangs geschrieben, dass ich keine Programmiererfahrung habe. Mit meinen mangelhaften Programmierkenntnissen muss ich eben das machen, was ich kann, und PWM zur Erstellung des Servosignals ist nicht mein Ding. Ich bin froh, dass ich erreicht habe, was ich brauche. Gruß Christian
na denn schau doch mal ins tutorial oder in die codesammlung da wirste fündig für pwm und servoansteuerung ;-)
Christian R. schrieb: > Hallo, > > nach meiner anfänglichen Freude über die Rege Teilnahme an diesem Thread > verstehe ich nun die abweichende Diskussion nicht mehr. Natürlich wäre > das Ansteuern des Servos im original-Zustand kein Problem und natürlich > kann ich dann den Motortreiber sparen.... Aber das ist hier doch gar > nicht gefragt. Ich hatte eingangs geschrieben, dass ich keine > Programmiererfahrung habe. Mit meinen mangelhaften > Programmierkenntnissen muss ich eben das machen, was ich kann, und PWM > zur Erstellung des Servosignals ist nicht mein Ding. Ich bin froh, dass > ich erreicht habe, was ich brauche. > > Gruß > Christian Hast Du mal in den Link reingeschaut den ich gepostet habe ? Welchen "großen" Unterschied macht nun die PWM die Du für Deine Vollbrücke brauchst gegenüber der PWM die den Servo korrekt in Position hält ? Entweder man hat das Prinzip der PWM verstanden oder sollte mal versuchen eine LED passend zum Poti zu regeln ;-) Und da eine Weiche idR nur zwei Positionen hat würde ein linearer Aktuator z.B. Magnetriegel o.ä. reichen, Stellung A kein Strom, Stellung B Strom dann braucht es nur einen digitalen I/O. Und was hast Du nun "erreicht" die "kaputten" Servos nun selber bis zum Anschlag zu bringen ?
Christian R. schrieb: > Hallo, > > nach meiner anfänglichen Freude über die Rege Teilnahme an diesem Thread > verstehe ich nun die abweichende Diskussion nicht mehr. Natürlich wäre > das Ansteuern des Servos im original-Zustand kein Problem und natürlich > kann ich dann den Motortreiber sparen.... Aber das ist hier doch gar > nicht gefragt. Ich hatte eingangs geschrieben, dass ich keine > Programmiererfahrung habe. Mit meinen mangelhaften > Programmierkenntnissen muss ich eben das machen, was ich kann, und PWM > zur Erstellung des Servosignals ist nicht mein Ding. Ich bin froh, dass > ich erreicht habe, was ich brauche. Für das Stellen des Motors ohne die Servoelektronik brauchst du doch auch eine PWM... Oder denkst du da an Zweipunktregelung?.. Hust hust.
Siebzehn mal Fuenfzehn schrieb: > Nein, ein analog Servo schnattert unter Last. Die Nachregelung wird alle > 50Hz gerechnet und ausgefuehrt. Ein Digitalpot schnattert nicht, weil > der auch regeln kann, ohne ein steuersignal zu bekommen. Das ist Unfug, ein Digitalservo rattern oftmals sogar mehr, da es empfindlicher und schneller auf Änderungen reagiert. Gerade wenn dann die Anlenkungen eben nicht 100% spielfrei und leichtgängig sind kann es auch ordentlich schwingen. So pauschal kann man das nicht sagen, dass Digiservos weniger zittern.
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.