analoges signal
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache C  |  analoges signal « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: analoges signal  (Gelesen 689 mal)
 
Nova
Newbie
*
Offline Offline

Beiträge: 1


Profil anzeigen
« am: September 23, 2011, 10:25:17 »

Hallo miteinander

ich bin ein regelrechter frischling was das programmieren in c und pics angeht. meine frage beschränkt sich hauptsächlich auf das programmiertechnische Vorgehen meines Projekts, daher hoffe ich, im richtigen Forum gelandet zu sein.

Mein Problem ist folgendes:
Ich hab mir eine Schaltung mit dem PIC24F08KA101 ausgebaut und möchte damit eine Lichschranke bauen. Dabei soll eine LED eine Photodiode anleuchten. Dieses Signal wird zu einem Transimpedanzwandler gesendet und dann zum PIC (Pin 15, AN12). Ich geh mal davon aus, dasds ich dies soweit richtig gehandhabt habe.
Ich möchte nun mittels des PIC herausbekommen, ob die LED die Diode anstrahlt oder nicht.

Meine Idee: Ich müsste doch eig. nur herausfinden, ob in dem Pin15 ein Signal eintrifft oder nicht. Nicht wahr?
Bei einigen Dingen bin ich mir einfach noch nicht so ganz sicher:
- muss ich den ADC zuvor irgendwie einstellen?
- wie um himmels willen kann ich prüfen, ob auf pin15 ein signal ankommt oder nicht?

Vielleicht traut sich ja jemand mein problem mit mir weiter zu erörtern.
vielen dank schonmal ^^


Hier das Datenblatt:
http://ww1.microchip.com/downloads/e...eet_39927b.pdf
Acha, mir ist bewusst, das sicherlich noch viel mehr Informationen von mir nötig sind.
Die rück ich auch breitwillig heraus =)
Achja, mit ist bequsst, dass sicherlich noch mehr Infromationen nötig sind.
Nur wollt ich hier nich
Gespeichert
Edson
Globaler Moderator
Sr. Member
*****
Offline Offline

Beiträge: 373



Profil anzeigen
« Antworten #1 am: September 23, 2011, 19:58:44 »

Hallo miteinander

ich bin ein regelrechter frischling was das programmieren in c und pics angeht. meine frage beschränkt sich hauptsächlich auf das programmiertechnische Vorgehen meines Projekts, daher hoffe ich, im richtigen Forum gelandet zu sein.

Hallo und willkommen im PIC-Mikrocontroller-Forum,

ich denke du bist hier richtig.

Zitat
Mein Problem ist folgendes:
Ich hab mir eine Schaltung mit dem PIC24F08KA101 ausgebaut und möchte damit eine Lichschranke bauen. Dabei soll eine LED eine Photodiode anleuchten. Dieses Signal wird zu einem Transimpedanzwandler gesendet und dann zum PIC (Pin 15, AN12). Ich geh mal davon aus, dasds ich dies soweit richtig gehandhabt habe.
Ich möchte nun mittels des PIC herausbekommen, ob die LED die Diode anstrahlt oder nicht.

Ok, das ist auch richtig.

Zitat
Meine Idee: Ich müsste doch eig. nur herausfinden, ob in dem Pin15 ein Signal eintrifft oder nicht. Nicht wahr?

Wenn man es stark vereinfacht, könnte man das so sagen... Zwinkernd

Zitat
Bei einigen Dingen bin ich mir einfach noch nicht so ganz sicher:
- muss ich den ADC zuvor irgendwie einstellen?

Ja, das ist unbedingt nötig. So ziemlich jedes Modul der OnChip-Peripherie eines PIC benötigt eine sogenannte Initialisierung, die für die Anwendung benötigte Einstellungen vornimmt.

Zitat
- wie um himmels willen kann ich prüfen, ob auf pin15 ein signal ankommt oder nicht?

Ich antworte mal ganz allgemein: Nachdem der ADC initialisiert ist, kannst du Wandlungen (Conversions) "anstoßen". Sobald die Wandlung abgeschlossen ist, kannst du das digitale Ergebnis aus den ADC-Registern auslesen. Um herauszufinden, ob ein bestimmtes Signal anliegt, benötigt man mehr als eine Wandlung - man wandelt in konstanten Abständen (zyklisch) und wertet die Ergebnisse aus.

Hier ein Code-Beispiel von Microchip (DS39705, Example 17-1):
Code:
AD1PCFG = 0; // Configure A/D port
// all input pins are analog
AD1CON1 = 0x2208; // Configure sample clock source
// and conversion trigger mode.
// Unsigned Fraction format (FORM<1:0>=10),
// Manual conversion trigger (SSRC<3:0>=000),
// Manual start of sampling (ASAM=0),
// No operation in Idle mode (ADSIDL=1).
AD1CON2 = 0; // Configure A/D voltage reference
// and buffer fill modes.
// Vr+ and Vr- from AVdd and AVss (VCFG<2:0>=000),
// Inputs are not scanned,
// Interrupt after every sample
AD1CON3 = 0; // Configure A/D conversion clock as Tcy/2
AD1CHS = 0; // Configure input channels,
// CH0+ input is AN0,
// CH0- input is Vr- (AVss).
AD1CSSL = 0; // No inputs are scanned.
IFS0bits.AD1IF = 0; // Clear A/D conversion interrupt.
// Configure A/D interrupt priority bits (AD1IP<2:0>) here, if
// required. Default priority level is 4.
IEC0bits.AD1IE = 1; // Enable A/D conversion interrupt
AD1CON1bits.ADON = 1; // Turn on A/D
AD1CON1bits.SAMP = 1; // Start sampling the input
Delay(); // Ensure the correct sampling time has elapsed
// before starting conversion.
AD1CON1bits.SAMP = 0; // End A/D sampling and start conversion
// Example code for A/D ISR:
void __attribute__ ((__interrupt__)) _ADC1Interrupt(void)
{
IFS0bits.AD1IF = 0;
}

Zitat
Vielleicht traut sich ja jemand mein problem mit mir weiter zu erörtern.
vielen dank schonmal ^^

Zitat
Acha, mir ist bewusst, das sicherlich noch viel mehr Informationen von mir nötig sind.
Die rück ich auch breitwillig heraus =)

Du bekommst hier jederzeit Hilfe, wenn du weitere Fragen hast und die versprochenen Infos mitbringst.

Grüße,
Edson
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #2 am: September 26, 2011, 01:17:56 »

Hi,

Zitat
Meine Idee: Ich müsste doch eig. nur herausfinden, ob in dem Pin15 ein Signal eintrifft oder nicht. Nicht wahr?
Ja, aber mache dir ueber das Umgebungslicht Gedanken. Fuer solche Optoanwendungen nimmt man ueblicherweise DC-Lichtfilter und pulst die LED.

Gruss
Stefan
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.037 Sekunden mit 17 Zugriffen.
 
Top! Top!