Forum: Mikrocontroller und Digitale Elektronik Lichtschranke anschließen Atmega16


von Willi S. (father_smu)


Lesenswert?

Gaaanz komisch,
also ich arbeite mit dem Atmega16 µC und wollte eigentlich nur mal 
schnell meine Reflex-Lichtschranken Testen.
Mein µC will sie aber nicht erkennen oO
Wenn ich den µC mit Tastern beschalte funktioniert alles. Meine LS hat 
4,7V und schaltet auf 0,2V. Also funktionstüchtig
In dem Programm soll sie nur mal schnell alle LED´s abschalten, was sie 
aber nicht tut.
Wenn ich das selbe per Taster versuche funktioniert das Klasse (hab auch 
schon mit entprell Methode versucht und auch schon ohne)
Muss ich was bestimmtes beachten?
Hier ein ganze simples kastriertes Programm von mir
1
#include <avr/io.h> 
2
#include <avr/interrupt.h>
3
#include <stdint.h> 
4
#include <stdlib.h>
5
#include <util/delay.h>
6
7
#include <avr/pgmspace.h>
8
9
10
#define  PORT_LED    PORTC    /* PORT C ZUM BETRIEB DER 'LEDs' */
11
12
#define PIN_LIGHT    PINA    /* EINLESEN DER PINS 'A'*/
13
  
14
#define LightBarrier1  PA7      /* Lichtschranken Signale */
15
16
17
int main(void)      /* PROGRAMM START */
18
{
19
  
20
  DDRC = 0xff;        //PORT C = Output
21
  DDRA=0x00;          //PORT A = Input
22
                //
23
  PORT_LED = 0x00;      //PORT C für LED alle ON
24
25
26
  
27
  
28
  while(1)
29
  {
30
                          
31
    if(!(LightBarrier1))            
32
    {                          
33
                              
34
        PORT_LED =0xFF;                
35
                  
36
    }
37
                                  
38
  }          
39
  
40
}

von Karl H. (kbuchegg)


Lesenswert?

>    if(!(LightBarrier1))
>    {


Da steht, wenn man die Makro Ersetzungen macht


     if(!(7))

und das kann niemals True ergeben.

Was du wolltest

     if(!( PIN_LIGHT & (1 << LightBarrier1)))

von Willi S. (father_smu)


Lesenswert?

Ok hab das so gemacht, ich denke aber das mein Problem eher 
elektronischer Natur ist.
1. Muss ich die Masse der Lichtschranke an mein GND meiner µC 
anschließen?
2. Wenn ich die Spannung zwischen Emiter und µC GND Messe kommen nur 2V 
an, anstatt der Emiter - Kollektor Spannung von 5V.

von Krapao (Gast)


Lesenswert?

> Reflex-Lichtschranken

Wie arbeiten die bzw. gibt es ein Datenblatt?

Wenn sie Open-Collector-Ausgänge 
(http://www.mikrocontroller.net/articles/Ausgangsstufen_Logik-ICs#Open_Collector) 
haben, brauchst du irgendwo einen Pull-Up Widerstand in der Schaltung.

> 1. Muss ich die Masse der Lichtschranke an mein GND meiner µC
> anschließen?

Höchstwahrscheinlich ja.

> 2. Wenn ich die Spannung zwischen Emiter und µC GND Messe kommen nur 2V
> an, anstatt der Emiter - Kollektor Spannung von 5V.

ICh kann mir deine Schaltung nicht vorstellen. Hast du einen Schaltplan?

von Hubert G. (hubertg)


Lesenswert?

GND muss verbunden sein.

von Willi S. (father_smu)


Lesenswert?

http://datasheet.octopart.com/HOA1405-001-Honeywell-datasheet-70555.pdf

Hier das Datenblatt dazu.

Solange ich hinten nix anschließe bekomme ich ja meine +4,7V oder 0,2V 
raus. Dachte ich kann die einfach an meine Pins hauen.

Schaltplan habe ich noch keinen da ich noch am rumprobiern bin. Die 
einzigsten Widerstände in meiner Schaltung sind nur die Vorwiderstände 
der Dioden.
Und mein µC sitzt auf dem STK500 Kit.
OK GND wird erst mal wieder angeschlossen :)

von Karl H. (kbuchegg)


Lesenswert?

Willi S. schrieb:

> OK GND wird erst mal wieder angeschlossen :)

GND musst du immer verbinden!
Das ist so selbstverständlich, dass es normalerweise nicht einmal 
erwähnt wird.

Spannungen sind Potentialdifferenzen!
D.h. Eine Spannung in Volt macht nur Sinn, wenn man ein Bezugspotential 
hat. Drumm musst du bei deinem Voltmeter ja auch immer die zu messende 
Leitung und Masse anschliessen.

2 Schaltungen haben aber nicht von sich aus den gleichen Bezugspunkt. 
Damit sie das haben, verbindet man die Massen. Dann beziehen sich alle 
Spannungen immer auf den gleichen Bezug und eine Spannung im Kontext der 
einen Schaltung macht dann im Kontext der anderen Schaltung wieder Sinn.

von Willi S. (father_smu)


Lesenswert?

OK OK ich hab das Problem erkannt.

Mein Fehler lag im flashen des µC. Dachte allein Kompilieren und 
speichern reicht schon aus, aber so wies aussieht muss ich erst mal 
einmal debuggen druchlaufen lassen das er das annimmt. komische Sache 
trotzdem Danke...

von Dietrich L. (dietrichl)


Lesenswert?

Willi S. schrieb:
> OK GND wird erst mal wieder angeschlossen :)
In diesem Fall gibt es keinen "richtigen" GND! Er "entsteht" erst durch 
die gewählte Beschaltung. z.B.:
- Durch die Sendediode muss Strom fließen,
  d.h.: Vcc => Widerstand => Anode => Kathode => GND
  (da Reihenschaltung ist die Reihenfolge egal)
- Ausgang:
  a) Vcc => Collector => Emitter => Widerstand => GND; Emitter an 
µC-Port
  b) Vcc => Widerstand => Collector => Emitter => GND; Collector an 
µC-Port
Die Variante b) ist für den µC besser, da Du als Widerstand den 
interenen Pull-Up verwenden kannst (aber per Programm Einschalten!).

Gruß Dietrich

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.