mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiny 24 bei High-Pegel nur 1,89 Volt am Ausgang


Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich beabsichtige meine Fensterläden zu steuern.
Dazu habe ich mir eine Schaltung und ein entsprechendes Programm 
ausgedacht.
Da meine Schaltung nicht so funktioniert wie ich will, habe ich mir die 
Schaltung vereinfacht aufgebaut (z.B. LEDs statt Relais).
Doch leider funktioniert mein Testaufbau nicht so wie ich will.
Wenn ich die LED schalten will und die Ausgangsspannung am 
entsprechenden Pin messe, erhalte  ich leider nur einen Wert mit ca. 
1,89 V.
Deswegen habe ich alle Potis und Schalter abgeschlossen da ich anfangs 
dachte dass es vielleicht an den Potis liegt die ich zur Simulation der 
Analogwerte brauche und habe ein Programm geschrieben, mit dem die LEDS 
nach einer Zeit von 1,5 s abwechselnd nach der Reihe einschalten.
Das Programm funktioniert soweit allerdings habe ich wieder nur 1,89 
Volt und die LEDs leuchten ziemlich schwach.
Wenn ich allerdings das IC nur mit den Spannungsversorgungspins (Pin 1 
und 14) an den Sockel halte und die Spannung am Ausgangspin bei 
High-Pegel messe, erhalte ich ca. 5V.
Die LEDs die ich verwende sind grün und die Widerstanden sind 1,42kOhm 
Widerstände. Auch wenn ich den Widerstandswert mit nem Multimeter messe, 
erhalte ich einen Wert über 1,4kOhm.
Bein angenommenen 5V am Ausgang dürften maximal 3,6mA fließen, was dem 
Mikrocontroller wenig ausmachen dürfte, da er laut Datenblatt maximal 
40mA liefern kann.
Zur Info ich nutze den Internen Takt und beschalte den Reset-Pin nicht.
Woran kann es liegen, dass der Ausgang nur 2,89 Volt annimmt?
Vielen Dank im Voraus
Andi

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haste villeciht nur die pull up'saktiviert anstatt den pin hochzuziehn?

Autor: Alain F. (fox82)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmierung plus ein Schema wäre Hilfreich.

Dies hier ist ein Beispiel einer LED an einem ATTiny15 / 45 mit Taster 
für EIN/AUS.
#include <avr/io.h>
#define F_CPU 8000000UL     /* int. Oszillator mit 8Mhz  */
#include <util/delay.h>

int x = 0;         
 
int main (void) {           
 
   DDRB = 0b00110111;             // Pin 3 = Eingang
   PORTB = 0b00101111;             // Pin 4 = LOW



  while(x==0){

  if ( !(PINB & (1<<PINB3)) ){


PORTB |= (1<<PB4);
x = 1;
_delay_ms(200); 

}
}
  while(x==1){

  if ( !(PINB & (1<<PINB3)) ){

PORTB &= ~(1<<PB4);  
x = 0;
_delay_ms(200); 
}
}
                          
    return main();               
}

Damit kann ich problemlos einen Transistor BC338 ansteuern und sogar 
Luxeon-LEDs schalten welche schnell mal 500mA brauchen. Dein Relais wird 
es somit ohne Probleme schalten.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mein verwendeter Quellcode
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>

#define F_CPU 8000000UL     

#include <util/delay.h>



int main (void)
{
  DDRA=0x0F;  //Port A Pin 0-3 auf Eingabe Pin 4-7 auf Ausgabe
  DDRB=0x00;  //Port B auf Eingabe
while (1)
{
  PORTA &= ~(1<<PA4);
  PORTA |= (1<<PA7);
  _delay_ms(1500);
  PORTA &= ~(1<<PA7);
  PORTA |= (1<<PA6);
  _delay_ms(1500);
  PORTA &= ~(1<<PA6);
  PORTA |= (1<<PA5);
  _delay_ms(1500);
  PORTA &= ~(1<<PA5);
  PORTA |= (1<<PA4);
  _delay_ms(1500);
}
}
Direkt an den Ausgängen hängen die oben erwähnten Vorwiderstände und in 
Reihe die LEDs mit Kathode gegen Masse.
Sonst ist nur noch +5V und Masse am Mikrocontroller angeschlossen.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> DDRA=0x0F;  //Port A Pin 0-3 auf Eingabe Pin 4-7 auf Ausgabe

Nein, genau umgekehrt. Mit 0x0F sind 0-3 Outputs und 4-7 Inputs.
Die "Nummerierung" in einem Byte geht von 7 - 0, also:
0x0F = (Bit7)00001111(Bit0)

Und da PA4-7 Inputs sind, schaltest du in deinem Code lediglich die 
internen Pullups ein und aus.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank,
hätte mir eigentlich ja schon beim simulieren auffallen müssen.
Jetzt klapts!!

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dir ist aber klar dass Du Relais nicht direkt mit dem AVR schalten 
kannst, oder?

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich, dazu betreibe ich nen Transistor als Schalter, der dann 
wiederum die Relais durchsteuert.
Als Relais habe ich 12 Volt Relais von SDS, da ich diese zufällig zu 
Hause hatte.
Gibt es eigentilch Relais, die man direkt mit einem Mikrocontroller 
ansteurn kann?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5V-Reed-Relais mit 500 Ohm kann man direkt anschliessen.

Manche davon haben eine interne Freilaufdiode, man sollte aber auch dann 
entweder eine separate Schottky-Diode dafür verwenden, oder eine 
Si-Diode in Serie schalten. Sonst läuft der Port um 0,7V aus dem 
Vorsorgungsbereich raus. Manche hindert das zwar nicht daran, statt 
dessen die interne Schutzdiode als Freilaufdiode zu verwenden, aber...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.