Forum: Mikrocontroller und Digitale Elektronik [Tiny2313] Einfachste Schaltung auf eigenem Board


von Tobias K. (finswimmer)


Lesenswert?

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

von X. Y. (jtr)


Lesenswert?

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.

von Tobias K. (finswimmer)


Lesenswert?

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

von Paul Baumann (Gast)


Lesenswert?

Mach's mal so:

VCC,10k, Reset, 100n, GND

MfG Paul

von Falk B. (falk)


Lesenswert?

@  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

von Tobias K. (finswimmer)


Lesenswert?

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

von Paul Baumann (Gast)


Lesenswert?

Ich sehe erst mal, daß für die LED ein Vorwiderstand fehlt. Das gibt 
Tote.
:-(

MfG Paul

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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?

von Tobias K. (finswimmer)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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!).

von Tobias K. (finswimmer)


Lesenswert?

@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

von Tobias K. (finswimmer)


Lesenswert?

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

von Tobias K. (finswimmer)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Tobias K. (finswimmer)


Lesenswert?

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

von Tobias K. (finswimmer)


Lesenswert?

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

von Sören H. (dersoe)


Lesenswert?

> 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!!

von Tobias K. (finswimmer)


Lesenswert?

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