Forum: Mikrocontroller und Digitale Elektronik HB100 auswerten (PicKIT 3)


von Dr.Diode (Gast)


Angehängte Dateien:

Lesenswert?

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

von Max H. (hartl192)


Lesenswert?

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
von Jakob F. (jmf123) Benutzerseite


Lesenswert?

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"

von Dr.Diode (Gast)


Lesenswert?

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)

von Max H. (hartl192)


Lesenswert?

Wenn du nur zwischen 1mV und 10-20 mV unterscheiden willst, konntest du 
den Komparator, der im PIC eingebaut ist, verwenden.

von Dr.Diode (Gast)


Lesenswert?

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?

von Max H. (hartl192)


Lesenswert?

Nein, hat er nicht, ist ein anderen uC von einem anderen Hersteller...

: Bearbeitet durch User
von Erich (Gast)


Lesenswert?

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

von Dr.Diode (Gast)


Lesenswert?

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, .....

von Max H. (hartl192)


Lesenswert?

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
von Dr.Diode (Gast)


Lesenswert?

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;
  }
}

von Max H. (hartl192)


Lesenswert?

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
Noch kein Account? Hier anmelden.