Forum: Mikrocontroller und Digitale Elektronik Schaltungsvorschlag AtTiny


von Juergen Bross (Gast)


Lesenswert?

Hallo zusammen,

ich möchte mir eine Schaltung zur Motoransteuerung mit Hilfe eines
8-pin AtTiny aufbauen. Gleichzeitig möchte ich, daß das Ganze in der
Schaltung immer noch programmierbar bleibt, ohne Jumper, Schalter oder
ähnliches umzuschalten. Die Ansteuerung des Motors geschieht über PWM
und externe H-Brücke. Dazu benötige ich 2 Ausgänge. Dann noch 2
Ausgänge für LEDs und einen Eingang für eine serielle Schnittstelle.
Das Ganze belegt von den 6 Port-Pins also schon 5. Ich habe leider
bislang noch keine Erfahrung mit ISP. Es scheint aber, daß ich dafür
insgesamt 4 Pins benötige, MOSI MISO SCLK und Res. Wie muß ich jetzt
meine Schaltung aufbauen, damit ich per ISP programmieren kann und nach
der Programmierung die Schaltung wie gewünscht verwenden kann? Über ein
Schaltungsbeispiel wäre ich echt dankbar.

Pumpernickel

von Sebastian (Gast)


Lesenswert?

wie genau stellst du dir das denn vor??
seriel 1 pin??
h-brücke 2 pins?

von ...HanneS... (Gast)


Lesenswert?

Einige Denkanstöße findest du hier:
http://www.brummbaerhannes.de/hannes/avr/fr_t12/Fahrst3.html

...

von Jason (Gast)


Lesenswert?

Guck einfach auf dieser Seite unter AVR-Tutorial da ist ein
schaltungsbeispiel.

von Juergen Bross (Gast)


Lesenswert?

@Hannes

Vielen Dank für den Link. Ich habe mir deine Schaltung mal angeschaut.
Wie laüft denn da die Programmierung per ISP genau ab? Läßt du dabei
die H-Brücke angeschlossen?

@Jason

Danke für den Hinweis. Die angegebene Schaltung benutzt laut Schaltplan
die Pins ausschließlich für ISP. Ich habe aber das Problem der
Doppelbelegung, d.h. Programm läuft = normale Schaltung, ISP läuft =
ISP Spannungen/Datenströme. Oder habe ich da jetzt etwas übersehen?

@Sebastian

seriell 1 pin:
Ein serieller Datenstrom wird über einen Eingangspin empfangen.

h-brücke 2 pins:
Wie in Hannes' Schaltung angegeben. Der eine Pin gibt eine PWM zur
Drehzahlregelung an den Motor aus. Wird die PWM am anderen Pin
ausgegeben dreht der Motor in Gegenrichtung. Werden beide Pins
gleichzeitig auf High oder Low gelegt wird der Motor kurzgeschlossen
und somit per elektrodynamischer Spannung abgebremst.

von ...HanneS... (Gast)


Lesenswert?

Die H-Brücke liegt an den Pins, die vom ISP nicht genutzt werden.

Es gibt zwar H-Brückenschaltungen, die bei gleichzeitigem Ansteuern
beider Brückenzweige den Motor kurzschließen, es gibt aber auch
H-Brücken (die Mehrheit), bei denen gleichzeitiges Ansteuern beider
Zweige verboten ist, da dann die Betriebsspannung über die Brücke
kurzgeschlossen wird.

Einige andere Schaltungen mit AVRs findest du hier:
http://www.brummbaerhannes.de/hannes/avr/avr.html

Bei Nutzung der ISP-Leitungen für andere Zwecke sind zwei Dinge zu
beachten:

- Die ISP-Leitungen dürfen durch die angeschlossene Hardware nicht
  belastet oder gar kurzgeschlossen werden.

- Das "Klappern" (ISP-Pegel und Impulse) an den ISP-Leitungen darf
  an der Peripherie nix aktivieren, was Schaden anrichten kann. Wenn
  da während des Programmupdates ein paar LEDs blinken, dann ist das
  ok, wenn aber Motoren anlaufen, dann ist das nicht so gut.

...

von Juergen Bross (Gast)


Lesenswert?

@Hannes,

vielen Dank für deine Antwort. Ich habe mir auch gleich sämtliche
Schaltungen mit ATtiny auf deiner Website angeschaut. Das hat mir
wirklich weitergeholfen. Ich werde also meinen seriellen Eingang und
die beiden LED-Ausgänge für SCK, MISO und MOSI verwenden. Wird
programmiert sende ich einfach keine seriellen Daten, damit reicht ein
Entkopplungswiderstand. Und die LEDs haben sowieso Vorwiderstände. Den
Reset-Pin benutze ich dann in meiner Schaltung weder als Ein- noch als
Ausgang. Damit müßte das Ganze doch dann funktionieren?

Mal was anderes: Wäre es auch möglich in solch einem ATtiny einen
Bootloader unterzubringen und das neue Programm über den seriellen Pin
runterzuladen? Oder sind diese 8-Füßler dazur zu "tiny"?

Pumpernickel

von ...HanneS... (Gast)


Lesenswert?

Ich weiß ja immer noch nicht, welchen AVR du nutzen willst. Ist ja auch
dein Bier und nicht meins.

Aber:
Der Tiny12 und Tiny15 unterstützt kein SPM, damit gibt es auch keinen
Bootloader. Dass der Platz dafür auch etwas eng ist steht auf einem
anderen Blatt. Der Tiny12 und Tiny15 hat auch kein UART, unterstützt
also auch keine serielle Schnittstelle (RS232) per Hardware. Wenn du
sie per Software machen möchtest, dann müsstest du den INT0-Pin dafür
nutzen. Hohe Übertragungsqualität wirst du vermutlich nicht erreichen,
dazu ist der interne RC-Taktgenerator nicht stabil genug, auch nicht
bei ordentlicher Kalibration.

Vielleicht solltest du doch erstmal das Datenblatt etwas genauer lesen
um zu sehen, welche Features (und Befehle) verfügbar sind und wie man
sie nutzt.

Den Reset-Pin brauchst du als Reset für ISP. Wenn du ihn per Fuse zu
einem Portpin umfunktionierst, dann kann der AVR kein ISP mehr. Du
bekommst ihn nur im Hochvolt-Modus wieder zurück.

...

von Juergen Bross (Gast)


Lesenswert?

@Hannes

Vielen Dank für deine Hilfe.

Dem Hinweis "SPM" werde ich nachgehen, habe aber keine große Hoffnung
auf einen Bootloader.

Daß AtTiny12 und AtTiny15 keinen HW-UART haben hatte ich schon bemerkt,
dann werde ich das Ganze entweder wie von dir vorgeschlagen per
Interrupt betreiben oder wie in der AN305/AVR305 (DOC0952.pdf) von
Atmel beschrieben als Software UART programmieren. Allerdings setzt
auch diese AN einen Quarz voraus. Da die Daten aber alle 35ms
wiederholt werden sollten evtl. verfälschte Bytes (genauer: von der SW
durch Taktschwankungen falsch interpretierte Bytes) nicht allzuviel
ausmachen. Ich kann zwar nach Datenblatt den Worst-Case nachrechnen
aber wie oft der wirklich in der realen Schaltung auftritt sagt dies
leider nicht aus, deshalb

"Versuch macht kluch."

Letzte Möglichkeit wäre warten auf die AtTiny25/45/85 Typen. Die haben
immerhin eine HW-USI. Damit soll laut AN307/AVR307 (DOC4300) auch eine
UART-Funktion programmierbar sein. Ob die mit dem internen Oszillator
besser funktioniert wie die Softwarelösung habe ich aber noch nicht
nachgelesen.

Das mit dem Resetpin ist mir klar, ich benötige ja nur 5 Port-Pins,
bleibt also noch der Reset-Pin übrig.

Also nochmals vielen Dank für deine Hilfe.

Pumpernickel

von ...HanneS... (Gast)


Lesenswert?

Hi Juergen...

Seit heute ist ja auch bei Reichelt der Tiny13 verfügbar. Ich habe mir
seine Features aber noch nicht genauer angesehen. Er taktet intern zwar
schneller, hat aber nur einen Timer. Daher sehe ich für meine
Anwendungen keinen Grund vom Tiny15 auf den Tiny13 umzusteigen.

Mit dem Tiny25 wird das wohl noch etwas dauern. Ich betrachte einen
neuen Typ erst als verfügbar, wenn er bei Händlern wie Reichelt
lieferbar ist.

In welcher Sprache willst du programmieren?

von Juergen Bross (Gast)


Lesenswert?

Hallo Hannes,

Mit der Verfügbarkeit des Tiny25 hast du natürlich recht. Was ich
wirklich hasse ist die Fehler/Probleme bei solchen Erstentwürfen
rauszufinden. Man ist sich nie sicher macht man selbst den Fehler oder
doch die HW oder der neue Assembler/Compiler/Simulator/Emulator. Und
der Support weiß meist auch von nichts. Deshalb werde ich wohl Tiny13
oder Tiny15 einsetzen. Ob der eine Timer des Tiny13 ausreicht weiß ich
noch nicht genau. Da muß ich die Datenblätter noch mal in Ruhe
vergleichen.

Da das Programm nicht sonderlich kompliziert werden wird gedachte ich
in Assembler zu programmieren. Mit C komme ich nicht wirklich gut
zurecht, BASIC habe ich nie verwendet sondern nur gelesen und Pascal
scheint mir für solch einen Winzling doch etwas zu groß zu sein.

Spricht etwas aus deiner Erfahrung dagegen? Welche
Entwicklungswerkzeuge verwendest du denn?

von ...HanneS... (Gast)


Lesenswert?

Hi...

Ich nutze AVR-Studio und schreibe in Assembler.

Ich glaube auch nicht, dass man kleine Mikrocontroller mit einer
Hochsprache sinnvoll programmieren kann, wenn man Null Ahnung von
Assembler hat. ASM ist also für den Einstieg die richtige Wahl.

Bisher sind meine Projekte so klein (überschaubar), dass sie noch mit
ASM realisierbar sind.

C ist natürlich gut (wenn man es kann), ist mir aber noch zu kryptisch.
Bei ASM findet man alle benötigten Informationen im Datenblatt und der
Befehlsreferenz (Hilfe des AVR-Studios), bei einer Hochsprache kommt
noch die Doku des Compilers und vor allem der Bibliotheken dazu. Das
ist mir dann doch zuviel Sucherei.

BASCOM halte ich nicht für die beste Wahl. Denn es verdummt. Man hat
zwar den "schnellen Erfolg", wenn man mit Null Wissen ein LCD oder
die serielle Schnittstelle nutzt, aber man ist dem Compiler und den
vorgefertigten Bibliotheken auf Gedeih und Verderb ausgeliefert. Ein
Blick ins Datenblatt bringt keine Erkenntnisse, da es für jedes
Hardwarefeature eine (kryptische) Config-Anweisung gibt. Da ist mir das
Setzen der (im Datenblatt beschriebenen) Bits in den I/O-Registern des
AVRs bedeutend lieber.
Und die Grenze der Demo-Version ist schnell erreicht, dann ist Kaufen
angesagt.

Von PASCAL habe ich keine Ahnung, auf dem PC schreibe ich in QB und VB.
Auf dem Commodore Plus/4 schrieb ich in BASIC und Assembler, auch
gemischt, also BASIC mit eingebundenen ASM-Routinen.

Von C habe ich eigentlich auch keine Ahnung, aber ich schau mir immer
öfters Beiträge zum Thema C an. Doch bisher halten mich die gestellten
Fragen und deren Antworten noch davon ab, mir das anzutun und mit C zu
beginnen.

...

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
Noch kein Account? Hier anmelden.