Hi! Ich habe auf einem Entwicklungsboard mehrere Schaltungen realisiert. Nun wollte ich anfangen, das Ganze auf ein eigenes Board zu bauen, möglichst kompakt. Der MC hat eine "Operating Voltages" 2,7-5,5V Ich habe drei AA Batterien in Reihe geschaltet, diese liefern mir 3,26V. Meine Schaltung sieht einen Intervall von 2Sek vor, der PD6 schaltet. Anbei hänge ich die Pinbelegung vom Tiny2313 und einen Auszug in Bezug auf den Reset Schalter. Mein Aufbau sieht nun so aus: -Pol Batterie -> 10 (GND) +Pol Batterie -> 20 (VCC) +Pol Vibrationsmotor -> 11 (PD6) -Pol Vibrationsmotor -> 10 (GND) Laut Anhang erzeugt ein "low level" am Reset(1) einen Reset. Also muss ich den auf High legen, indem ich: Reset(1) -> 20 (VCC) verbinde? So klappt das Ganze nun leider nicht. Die Reihenschaltung kann aber den Vib-Motor alleine ansteuern/anschalten. Auf dem Entwicklungsboard geht auch alles. Kann es sein, dass die Batterien unter der Last nicht mehr mitmachen? Muss ich den MC evtl. noch extra anschalten? Danke! Tobi Anhang: http://finswimmer.de/pinout-2313.jpg http://finswimmer.de/reset.jpg
Reset ist falsch beschaltet, schau mal oben links ins Tutorial. Bist du sicher das der Tiny den Motor direkt treiben kann? Normalerweise macht man sowas über einen Transistor. Ein 100n Kondensator muß zwischen VCC und GND.
Aus http://www.mikrocontroller.net/articles/AVR_Checkliste: "Als Mindestbeschaltung empfiehlt sich dringend, einen externen Pullup-Widerstand vorzusehen (typisch 10 kOhm), der den Reset-Pin mit VCC verbindet." Wie geht das denn? Einfach an den Pin den Widerstand dranlöten (bzw. dranstecken, ich habe ein Steckboard um die ganzen Schaltungen nicht immer löten zu müssen) "Zusätzlich sollte man auch noch einen Kondensator 47 nF oder 100 nF zwischen Reset-Pin und GND anordnen." Wäre dann sowas: Reset-Pin -> VCC -> 10kOhm -> 100nF -> GND Nun fließt der Strom aber immer den kürzesten Weg, also bin ich mir nicht sonderlich sicher, dass der Reset-Pin davon was mitbekommt? Danke tobi
Mach's mal so: VCC,10k, Reset, 100n, GND MfG Paul
@ Paul Baumann (Gast) >VCC,10k, Reset, 100n, GND Da frage ich mich doch glatt, wozu der liebe Gott den Schaltplan erfunden hat? http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment http://www.mikrocontroller.net/articles/Bild:Avr-schaltplan-1.gif MFG Falk
Sodele! Jetzt hatte ich mal ein bisschen Zeit. Anbei erstmal der Schaltplan von meiner Konstruktion. Vorweg: Es tut sich nichts. Der MC sollte alle 2Sek den PD6 an/aus schalten. Dann habe ich ein bisschen gemessen: VCC hat 4,8V VOR Kondensator 4,71V NACH Kondensatior 0V PD6 dauerhaft 0V Auf dem Entwicklungsboard geht der MC. Hier nun mein Schaltplan: http://finswimmer.de/avr/eigenes-board.jpeg Hat jemand eine Idee? Danke Tobi
Tobias Kaminsky: > Hier nun mein Schaltplan: > http://finswimmer.de/avr/eigenes-board.jpeg 1/ Wie schon von Paul geschrieben: Vorwiderstand! 2/ Du hast Masse und den - Pol der Batterie... sind die auch miteinander verbunden? 3/ Welches Programm ist im Attiny2313?
1) Vorwiderstand habe ich wirklich vergessen gehabt. Aber da der Port noch nichtmal geschaltet wird, sollte das ja nicht das Problem sein? 2) Das lag am Diagramm. Ich habe nur eine Leiste auf die alle Groundkabel gehen. Diese Leiste wird dann weitergeleitet auf mein Entwicklungsboard zu dessen GND. (Von dessen +5V bekomme ich auch die Spannung, sodass ich im Moment keine Batterie o.ä. brauche. 3) Ein ganz Einfaches Programm, welches alle 2Sek. das Bit für den PD6 switcht. Dieses geht auch wunderbar mit dem Entwicklungsboard. Danke Tobi
Dann entspricht das "eigene Board, möglichst kompakt" vielleicht nicht dem Aufbau auf dem Entwicklungsboard. Eine Leitung ist schnell vergessen oder ein Kurzschluss ist schnell fabriziert... Hast du das Boardlayout, Fotos oder einen Scan von deinem Board? Um die Zweifel mit der Batterie auszuschliessen, könntest du die Batterie auf dem eigenen Board mal weglassen und die Spannung über lose Strippen von dem Entwicklungsboard beziehen (wenn Kurzschluss durch peinliche Kontrolle des Boards ausgeschlossen ist!).
@Stefan: Die Spannung bekomme ich schon vom Entwicklungboard. Dahin zurück geht auch GND. Kurzschluss habe ich nicht, da sonst der Umwandler auf dem Entwicklungboard heiß läuft (ist mir schon bei anderen Gelegenheiten passiert) Nur nochmal zur Verdeutlichkung: Der Chip geht immer noch auf dem Entwicklungsboard, daher ist da nicht irgendwas kaputt. Bei nochmaligem Durchmessen fällt mir aber auf, dass die Spannung nach dem Widerstand auf 0V ist (Das Messgerät ist im Ground, das andere wird einmal vor und dann nach dem Widerstand angelegt) Der Widerstand ist ein Drehrad, mit dem man die Ohm-Zahl direkt einstellen kann. Messe ich den Widerstand direkt mit dem Multimeter, so bekomme ich 9,81Ohm angezeigt. Könnte da der Fehler liegen? Hier ist mein Entwicklungboard: http://finswimmer.de/avr/TINY2313_board.jpg Danke Tobi
EDIT: Nachdem ich einen kleinen Fehler entdeckt hatte, habe ich nun folgende Situation: Vor dem Kondensator: 4,95V Nach dem Kondensator: 0V Am Reset Pin: 4,95V Ebenso an VCC Und der MC macht immer noch nichts. Tobi
Nachtrag: Nun habe ich vor die LED einen Vorwiderstand mit 560Ohm gehängt, und siehe da: Sie leuchtet sehr sehr schwach. PD6 zeigt 2V an. Aber leider wird sie nicht an/aus geschaltet. Muss ich den MC irgendwie noch "starten"? Danke Tobi
Tobias Kaminsky wrote: > Bei nochmaligem Durchmessen fällt mir aber auf, dass die Spannung nach > dem Widerstand auf 0V ist (Das Messgerät ist im Ground, das andere wird > einmal vor und dann nach dem Widerstand angelegt) > Der Widerstand ist ein Drehrad, mit dem man die Ohm-Zahl direkt > einstellen kann. > Messe ich den Widerstand direkt mit dem Multimeter, so bekomme ich > 9,81Ohm angezeigt. > > Könnte da der Fehler liegen? Zwischen den empfohlenen 10 kOhm und 9,81Ohm ist ein mächtiger Unterschied. Kannst du nirgends einen Widerstand in der Grössenordnung von 10K finden und einbauen? Der Kondensator und der Widerstand sind so dimensioniert, dass beim Einschalten der Vcc der µC rel. mit einem bestimmteh Zeitverhalten aus dem Reset herauskommt. Deine Vcc Messung 0V Messung zwischen Widerstand und /RESET-Pin macht mich stutzig. Dort muss (!) nahezu Vcc anliegen, weil sonst der µC nicht aus dem RESET-Zustand herauskommt. Wenn der µC im RESET verharrt, läuft das Programm nicht, d.h. es blinkt nichts. Deine spätere Messung sieht OK aus, wenn GND richtig gewählt ist. Den GND Bezugspunkt bei der Spannungsmessung würde ich an dem GND Pin des µC wählen. Nur dann siehst du die echt vorhandene Vcc am µC! Das Bild vom Entwicklungsboard bringt wenig, das Bild von dem nicht funktionierenden Aufbau inkl. der Verkabelung wäre interessant. MOOOOMMMMEEENNNT - Auf dem Entwicklungsboard sieht man einen QUARZ! Wenn der µC auf externe Taktquelle gefust ist und dein Selbstbauboard keine externe Taktquelle hat, rennt der µC dort nicht los! Abhilfe wäre einen neuen, ungefusten µC auszuprobieren oder die Fuses des µC vom Entwicklungsboard in den Fabrikzustand (d.h. interne Taktquelle) zurückzusetzen.
DANKE!! Die Idee mit den Fuses war wohl der Schlüssel! Nun sehe ich die Lampe blinken. Allerdings, wenn ich von GND(direkt am µC) zur LED messe, dann bekomme ich bei PD6 aus: 1,81V PD6 an: 2,12V mit einem Vorwiderstand von 5 Ohm. Eigentlich sollte doch, wenn der Port augeschaltet ist 0V anliegen? Denn so leuchtet die LED sehr schwach, auch wenn sie aus sein sollte. Danke Tobi
Ich habe das Ganze nun erweitert, damit ich mich Stück für Stück an mein Vorhaben (LCD, Countdown mit Taster einstellen) herantasten kann. Nun habe ich einen Taster an PD5 angeschlossen: VCC -> Taster -> PD5
1 | //#include <TINY2313.h> // ATtiny2313 MCU
|
2 | #define F_CPU 7372800UL
|
3 | |
4 | |
5 | #include <avr/io.h> |
6 | #include <util/delay.h> // Delay functions |
7 | #include <inttypes.h> |
8 | |
9 | inline uint8_t debounce(volatile uint8_t *port, uint8_t pin) |
10 | {
|
11 | if ( ! (*port & (1 << pin)) ) |
12 | {
|
13 | /* Pin wurde auf Masse gezogen, 100ms warten */
|
14 | _delay_ms(30); // max. 262.1 ms / F_CPU in MHz |
15 | _delay_ms(30); |
16 | if ( *port & (1 << pin) ) |
17 | {
|
18 | /* Anwender Zeit zum Loslassen des Tasters geben */
|
19 | _delay_ms(30); |
20 | _delay_ms(30); |
21 | return 1; |
22 | }
|
23 | }
|
24 | return 0; |
25 | }
|
26 | |
27 | int main(void) |
28 | {
|
29 | |
30 | DDRD=0x40; /* PIN PD5 auf Eingang (Taster)=0,PD6 auf Ausgang=1 */ |
31 | PORTD=0x10; /* Pullup-Widerstand aktivieren, fÃŒr PD5 */ |
32 | |
33 | while(1) |
34 | {
|
35 | |
36 | if (debounce(&PIND, PD5)) /* Falls Taster an PIN PB6 gedrueckt.. */ |
37 | {
|
38 | PORTD ^= (1<<PD6); /* ..LED an Port PD6 an-bzw. ausschalten */ |
39 | }
|
40 | }
|
41 | return 0; |
42 | }
|
So. Nun ist das Problem, dass sich die LED im Halb-Sekundentakt an/ausschaltet. Für mich sieht es so aus, als ob "irgendeine" Restspannung die Routine veranlasst immer die LED zu schalten. Wenn ich nun aber mein Multimeter zwischen GND und PD5 klemme, dann habe ich diese Probleme nicht mehr. Der Taster funktioniert dann so wie er soll (evtl. ein bisschen langsam in der Reaktion, aber er geht wenigstens). Habe ich den Taster nun gar nicht angeschlossen, also an PD5 nichts angebracht, so schaltet die LED auch munter vor sich hin. Nun gehe ich davon aus, dass ich irgendein Bauteil vor dem Taster vergessen habe. Könnt ihr mir (mal wieder) auf die Sprünge helfen? Vielen Dank Tobi
> Allerdings, wenn ich von GND(direkt am µC) zur LED messe, dann bekomme > ich bei > PD6 aus: 1,81V > PD6 an: 2,12V > mit einem Vorwiderstand von 5 Ohm. > erstaunlich, dass da überhaupt noch was blinkt.... Der Vorwiderstand ist mehr als nur "ein wenig" zu klein. Schaumal hier: http://www.elektronik-kompendium.de/sites/bau/1109111.htm Da wird erklärt, wie du den richtigen Vorwiderstand ermittelst. Zu befürchten ist, dass du den Ausgangspin des AVR's hingerichtet hast... Also: Richtigen Vorwiderstand raussuchen (irgendwas bei 200R oder so...je nachdem was du für eine LED hast. Wenn es eine 2mA LED ist brauchst du eher 1,5kOhm!) und dann einen anderen Port vom AVR auswählen. Viel Erfolg!!
Mit 2,2V Durchlassspannung (ist eine gelbe LED), 5V Betriebsspannung und 20mA käme ich auf 150 Ohm. Stelle ich dies nun ein geht die LED ohne Probleme. Allerdings leuchtet sie ohne Vorwiderstand um einiges heller. Evtl liegt die Tatsache, dass es komplett ohne Vorwiderstand geht ja irgendwie daran, dass ich die Spannung von meinem Experimentierboard nehme und nicht direkt aus einem Netzteil? Wenn ich mal mit einer eigenen Spannungsquelle arbeite werde ich auf jedenfall an die 150 Ohm denken. Das löst nun leider mein oben angesprochenes Problem mit dem Taster nicht. Danke Tobi
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.