logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Czujnik ekspozycji światła

wochen 28 Sty 2010 14:49 1818 5
REKLAMA
  • #1 7605579
    wochen
    Poziom 10  
    Witam,

    jestem szczęśliwym posiadaczem Arduino, postanowiłem więc zrobić prosty czujnik ekspozycji. Użyłem w nim:
    - Arduino,
    - buzer na 5V,
    - opornik 1K,
    - przycisk zwarciowy
    oraz fotorezystor.

    Działa super, opierając się na kodzie, który został wpisany w Arduino.
    Po uruchomieniu i wciśnięciu przycisku, Arduino odczytuje wartość aktualną ekspozycji światła. Od tej chwili pamięta tą wartość i jeśli się ona zmieni w trakcie kolejnych odczytów, buzer się załącza.

    Moje pytanie: czy można to zrobić np. na ATMEGA8 lub pokrewnym?
    Jeśli tak - a pewnie się da - czy jest chętny do pomocy?

    Pozdrawiam.

    Przeniesiono z Programowanie Ogólne. - arnoldziq
  • REKLAMA
  • #2 7605716
    owenpe
    Poziom 17  
    No pewnie, że się da:) A chętni do pomocy na pewno się znajdą :) Jakby co to już 1 jest
  • REKLAMA
  • #3 7606171
    wochen
    Poziom 10  
    Oto mój prototyp:

    Czujnik ekspozycji światła

    W kwestii programowania AVR jestem laikiem, kilka razy zaprogramowałem układy ATMEGA8 lub podobne, ale nie pisałem nigdy oprogramowania (posiadałem gotowe pliki hex).

    O co chodzi?
    Czujnik ekspozycji ma określoną czułość, którą definiujemy podczas programowania. Po włączeniu urządzenia (zasileniu), wciskamy przycisk, który informuje procesor, jakie jest aktualne natężenie światła (robi odczyt wartości fotorezystora). Następnie w zapętlonym procesie rozpoczyna pomiar. Jeśli jest on znacznie większy od wartości początkowej (nasza zadeklarowana tolerancja), to sygnalizuje buzerem poprzez podanie na niego napięcia.

    I to tak w skrócie.

    Będę wdzięczny za pomoc.
  • REKLAMA
  • #4 7606313
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 7606441
    wochen
    Poziom 10  
    Dzięki Panowie, zatem do dzieła.

    Poniżej schemat, który działa:

    Czujnik ekspozycji światła

    a oto kod, którego użyłem:

    
    int photosensorPin = 0;
    int programator = 5;
    int piezoPin = 9;
    
    int val = 0;
    int val0 = 0;
    int zaprogramowane = 0;
    int temp = 0;
    
    void setup() {
      pinMode(piezoPin, OUTPUT);
      Serial.begin(9600); // sets the serial port to 9600  
    }
    
    void loop() {
    
        temp = analogRead(programator);
        if (temp >1000){
          val0 = analogRead(photosensorPin);
        }
        
        val = analogRead(photosensorPin);
    
        if (val+4 < val0 || val-4 > val0) 
        {
          digitalWrite(piezoPin, HIGH); 
        }
        else
        {
          digitalWrite(piezoPin, LOW);
        }
    }
    


    Potrzebowałbym schemat połączenia tych elementów wraz z mikroprocesorem, np. ATMEGA8. No i dodatkowo porady, jak go zaprogramować.


    EDIT:
    Znalazłem trochę kodu w BASCOMie, tylko jeszcze chciałbym dołożyć do tego włącznik zwarciowy, by "programował" mi aktualny stan:

    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    Config Pinb.0 = Output
    Config Pind.7 = Output
    
    Dim Wart_ac As Word
    
    Start Adc
    
    Do
    
    Wart_ac = Getadc(0)
    
    
    If Wart_ac > X Then                                         'x to jest jakas liczba                                       '
    Portd.7 = 1
    Portb.0 = 0
    End If
    
    If Wart_nap > Y Then                                        'tak samo zamiast y wpisz jakas liczbe
    Portd.7 = 0
    Portb.0 = 1
    End If
    
    Loop
    End 
  • #6 7713887
    wochen
    Poziom 10  
    Panowie oferowaliście pomoc i co teraz?

    Czekam, czekam i nic. A przy okazji łamię regulamin podbijając temat i pisząc o niczym.

    Przepraszam, usunę post jak tylko ktoś się odezwie.
REKLAMA