Hi! Wir verwenden: - HB100 Microwave Sensor Module (https://www.openimpulse.com/blog/products-page/product-category/hb100- microwave-sensor-module/) - PIC18F14k22 + PicKIT3 (http://ww1.microchip.com/downloads/en/DeviceDoc/41365E.pdf) Wir haben bereits das IF - Signal vorverstärkt (Vorverstärkerschaltung im Datenblatt; Anhang 1) und es beträgt momentan einige mV. Unser Ziel ist es, den Radarsensor als Bewegungsmelder durch einen Mikrocontroller auswerten zu lassen. Bei 6m beträgt die Signalamplitude 10 - 20mV (Siehe Bild 1). Nun wollte ich fragen, ob ein Mikrocontroller diesen geringen Spannungswert verarbeiten kann oder ob wir eine zweite Verstärkerstufe realisieren sollten. Oder könnte uns wer ein Beispielprogramm zu Verfügung stellen? (Sobald ein Bewegung bemerkt worden ist, soll eine Sirene auslösen die wir mittels eines PWM-Signal programmieren wollen). Mit freundlichen Grüßen Dr.Diode
Dr.Diode schrieb: > HB100 auswerten (PicKIT 3) Das Programmiergerät (PICkit3) ist relativ irrelevant, du solltest besser den PIC18F14k22 im Betreff erwähnen. Mit der internen Spannungsreferenz von 1024mV kann der PIC Spannungen bis 1024mV mit einer Auflösung von 1mV messen. Wie groß ist der Unterschied im Signal zwischen Leerlauf und wenn etwas erkannt wird?
:
Bearbeitet durch User
Dr.Diode schrieb: > Oder könnte uns wer ein Beispielprogramm zu Verfügung stellen? Hallo Dr.Diode, ich habe eine FFT realisiert und den Pre-Amp nach Datenblatt nachgebaut, Links und Code - Beitrag "FFT mit Wasserfall auf dem LPC1768"
Max H. schrieb: > Dr.Diode schrieb: > HB100 auswerten (PicKIT 3) > > Das Programmiergerät (PICkit3) ist relativ irrelevant, du solltest > besser den PIC18F14k22 im Betreff erwähnen. > > Mit der internen Spannungsreferenz von 1024mV kann der PIC Spannungen > bis 1024mV mit einer Auflösung von 1mV messen. > > Wie groß ist der Unterschied im Signal zwischen Leerlauf und wenn etwas > erkannt wird? Im Leerlauf beträgt die Spannung ungefähr 1mV und bei einer Bewegung 10-20 mV (bei einer Distanz von 6m)
Wenn du nur zwischen 1mV und 10-20 mV unterscheiden willst, konntest du den Komparator, der im PIC eingebaut ist, verwenden.
Jakob F. schrieb: > Dr.Diode schrieb: >> Oder könnte uns wer ein Beispielprogramm zu Verfügung stellen? > > Hallo Dr.Diode, ich habe eine FFT realisiert und den Pre-Amp nach > Datenblatt nachgebaut, Links und Code - > Beitrag "FFT mit Wasserfall auf dem LPC1768" Hast du dein Programm für dein Projekt in MPLAB programmiert?
Nein, hat er nicht, ist ein anderen uC von einem anderen Hersteller...
:
Bearbeitet durch User
Hier verwenden die denselben Radarsensor https://courses.engr.illinois.edu/ece445/projects/spring2014/project1_design_review.pdf siehe ab Seite 8ff. Verstärker und Comparator Seite 10. Gruss
Max H. schrieb: > Wenn du nur zwischen 1mV und 10-20 mV unterscheiden willst, konntest du > den Komparator, der im PIC eingebaut ist, verwende Ich hab ein Programm geschrieben, aber leider treten Fehler auf: #include <p18cxxx.h> #include <pwm.h> #include <adc.h> #define XTAL_FREQ 4000000 #pragma config FOSC = IRC #pragma config PWRTEN = ON #pragma config BOREN = OFF #pragma config WDTEN = OFF #pragma config STVREN = ON #pragma config LVP = OFF #define sLo sPORTC.RC3 //"Low" LED #define sHi sPORTC.RC1 //"High" LED union { int port; struct { unsigned RC0 : 1; unsigned RC1 : 1; unsigned RC2 : 1; unsigned RC3 : 1; unsigned RC4 : 1; unsigned RC5 : 1; }; } sPORTC; void main () { TRISC = 0b110101; CM2CON0bits.C2R = 1; //Comparator C2 Reference Select bits, C2VIN+ connects to C2VREF CM2CON0bits.C2POL = 1; //Comparator C2 Output Polarity Select bit, C2OUT logic is inverted CM2CON0bits.C2ON = 1; //Comparator C2 is enabled // VREFCONbits.FVR = 0; // ? VREFCON0bits.FVR1EN = 1; //Fixed Voltage Reference 1 Enable bit, FVR is enabled for (;;) { VREFCON0bits.FVR1S<1:0> = 00; //Ab hier ist ein Fehler / 00 = 1.024 V _delay_us(10); sLO = !CM2CON0bits.C2OUT; VREFCON0bits.FVR1S<1:0> = 01; // 01 = 2.048V _delay_us(10); sHI = CM2CON0bits.C2OUT; PORTC = sPORTC.port; } } Ist es eigentlich möglich bei den "PIC18F14k22" die Referenzspannung einzustellen? Ich habe zur Zeit nur "fixe" Spannungswerte gefunden wie z.B.: 1.024V, 2.048V, .....
Dr.Diode schrieb: > Ist es eigentlich möglich bei den "PIC18F14k22" die Referenzspannung > einzustellen? ja, aber nur 3 Werte: 1.024V, 2.048V oder 4.096V > VREFCON0bits.FVR1S<1:0> = 00; //Ab hier ist ein Fehler / 00 = 1.024V Zitat Datenblatt: > FVR1S<1:0>: Fixed Voltage Reference 1 Voltage Select bits > 00 = Reserved, do not use > 01 = 1.024V (x1) > 10 = 2.048V (x2) > 11 = 4.096V (x4) Diese Zeile sollte also so aussehen:
1 | VREFCON0bits.FVR1S=0b01; |
> union { > int port; > struct { > unsigned RC0 : 1; > unsigned RC1 : 1; > unsigned RC2 : 1; > unsigned RC3 : 1; > unsigned RC4 : 1; > unsigned RC5 : 1; > }; > } sPORTC; Ich weiß nicht welchen Compiler du hast, bei C18 und XC8 ist das schon in der Header Datei definier, nur ohne das 's' an Anfang. > #include <p18cxxx.h> Es ist vermutlich keine gute Idee für einen 18F14k22 die Headerdatei für irgendeinen 18Cxxx einzubinden. P.S. In Zukunft bitte Syntax Highlighting verwenden
1 | [c]C-Code[/c] |
:
Bearbeitet durch User
Max H. schrieb: > Ich weiß nicht welchen Compiler du hast, bei C18 und XC8 ist das schon > in der Header Datei definier, nur ohne das 's' an Anfang. Ich verwenden den C18 Compiler. Max H. schrieb: > In Zukunft bitte Syntax Highlighting verwenden
1 | C-Code |
C: \Programme\Grundprogramm\Source.c:43:Error [1205] unknown member 'FVR1S' in '__tag_69' C: \Programme\Grundprogramm\Source.c:43:Error [1131] type mismatch in assignment C: \Programme\Grundprogramm\Source.c:44:Warning [2058] call of function without prototype C: \Programme\Grundprogramm\Source.c:47:Error [1205] unknown member 'FVR1S' in '__tag_69' C: \Programme\Grundprogramm\Source.c:47:Error [1131] type mismatch in assignment C: \ Programme\Grundprogramm\Source.c:48:Warning [2058] call of function without prototype Diese folgenden Fehler gehören zu diesem Abschnitt: for (;;) { VREFCON0bits.FVR1S = 0b00; //Ab hier ist ein Fehler _delay_us(10); sLo = !CM2CON0bits.C2OUT; VREFCON0bits.FVR1S = 0b01; _delay_us(10); sHi = CM2CON0bits.C2OUT; PORTC = sPORTC.port; } }
Das mit dem Syntax Highlighting ist noch nicht angekommen...? Versuch mal die "p18f14k22.h" an Stelle der <p18cxxx.h> zu includieren. Beim C18 sehen delays anders aus: Seite 146: http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf Und die "delays.h" musst du includieren. Wenn du die "p18f14k22.h" includierst, kannst du auf die IOs einfach mit LATCbits.LATC0 oder PORTCbits.PORTC0 zugreifen. PORT zum Lesen von Eingängen, LAT zum Schreiben von Ausgängen.
1 | //Ausgans auf '1':
|
2 | LATCbits.LATC0=1; |
3 | //Ausgans auf '0':
|
4 | LATCbits.LATC0=0; |
Und nicht vergessen den Pin vorher aus Ausgang zu schalten:
1 | TRISCbits.TRISC0=0; //RC0 als Ausgang |
P.S. Ganz ehrlich: Hast du schon mal irgendwas (erfolgreich) mit PICs gemacht? Wenn nein: http://pic-projekte.de/wordpress/?p=133#comments
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.