Fuktsensor -> uPC -> 7seg display
spännande 
Här har ni min prel schema. ser ni ngt fel?
http://www.ladda-upp.com/bilder-a/ritnign-463.JPG
Sen satt jag o kollade på VOTI's sida och såg att wisp628 inte var specad för 16F690. Men jag antar att det skall funka, eller?

Här har ni min prel schema. ser ni ngt fel?
http://www.ladda-upp.com/bilder-a/ritnign-463.JPG
Sen satt jag o kollade på VOTI's sida och såg att wisp628 inte var specad för 16F690. Men jag antar att det skall funka, eller?
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
> ...och såg att wisp628 inte var specad för 16F690. Men jag antar att det skall funka, eller?
Ser ut så ja...
Kod: Markera allt
Specs of following targets were collected from the configuration file(s):
+12F609 16F676 16F818 +16F884 +18F2423 +18F2680 18F452 18F6620
+12HV609 +16F677 16F819 +16F886 18F2431 +18F2682 +18F4520 18F6621
+12F615 +16F684 16F83 +16F887 +18F2450 +18F2685 +18F4523 +18F6622
+12HV615 +16F685 16F84 +16F913 +18F2455 18F4220 +18F4525 +18F6627
12F629 +16F687 16F84A +16F914 +18F2458 +18F4221 +18F4550 18F6680
+12F635 +16F688 16F87 +16F916 18F248 18F4320 +18F4553 18F6720
12F675 +16F689 16F870 +16F917 +18F2480 +18F4321 18F458 +18F6722
+12F683 +16F690 16F871 +16F946 +18F2510 18F4331 +18F4580 18F8410
16F610 *16F716 16F872 18F1220 +18F2515 +18F4410 +18F4585 18F8490
16HV610 16F72 16F873 +18F1230 18F252 18F442 +18F4610 18F8520
16F616 16F73 16F873A 18F1320 +18F2520 +18F4420 +18F4620 18F8525
16HV616 16F737 16F874 +18F1330 +18F2523 +18F4423 +18F4680 +18F8527
16F627 16F74 16F874A 18F2220 +18F2525 18F4431 +18F4682 18F8585
16F627A 16F747 16F876 +18F2221 +18F2550 +18F4450 +18F4685 18F8620
16F628 16F76 16F876A 18F2320 +18F2553 +18F4455 18F6410 18F8621
16F628A 16F767 16F877 +18F2321 18F258 +18F4458 18F6490 +18F8622
16F630 16F77 16F877A 18F2331 +18F2580 18F448 18F6520 +18F8627
+16F631 16F777 16F88 +18F2410 +18F2585 +18F4480 18F6525 18F8680
+16F636 +16F785 +16F882 18F242 +18F2610 +18F4510 +18F6527 18F8720
16F648A +16HV785 +16F883 +18F2420 +18F2620 +18F4515 18F6585 +18F8722
[+] Wisp6x8 firmware >= 1.10, [*] firmware >= 1.12
Jag satte dioder för att slippa ta hänsyn till att olika antal led drar olika strömmar och jag tycker det blir ojämn ljusstyrka med ett motstånd.
Med dioder sätter jag spänningen till 1,6V och då drar de en acceptabels ström.. Men visst denna variant ger oxå variation på ljusstyrka...
Sodjan. Vet inte vad det var för lista jag hittade men enl denna ska dat iaf inte va ngt problem ju... ja då får man börja fundera på koden
Med dioder sätter jag spänningen till 1,6V och då drar de en acceptabels ström.. Men visst denna variant ger oxå variation på ljusstyrka...
Sodjan. Vet inte vad det var för lista jag hittade men enl denna ska dat iaf inte va ngt problem ju... ja då får man börja fundera på koden

- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
Nej, lysdioderna drar inte en "acceptabel" ström om du ger dem en konstant spänning. De drar en ström som kommer att vara starkt temperatur- och inividberoende.
Dessutom drar inte lysdioder olika mycket ström, de TÅL olika mycket ström.
Om du inte får till ljusstyrkan med motstånd har du dimensionerat något dåligt.
Dessutom drar inte lysdioder olika mycket ström, de TÅL olika mycket ström.
Om du inte får till ljusstyrkan med motstånd har du dimensionerat något dåligt.
Nu till koden.
Jag har alltså tänkt läsa in ett värde mellan 0,75-3,9V på pinnen som heter AN2 (tror den räknas som kanal 3). Därefter ska jag jämföra värdet med ett förutbestämt värde. Ex så vet jag att en spänning på 2V motsvarar ca 40% relativ luftfuktighet. Är värdet rätt kommer rätt segmenkombination att tändas och visa 40 på displayen. Den lilla kod jag knackat ner följer. Och med denna kommer även frågorna. Jag använder MikroC
Frågor.
1/ Jag är inte helt säker på hur jag sätter RA2 som ADC ingång och resten av pinnarna som digitala utgångar.
2/ Värdet från ADC'n lägger jag i Value. Hur ska jag jämföra Value med ett värde som ex 2,453V? Hur ska jag skriva värdet 2,453 binärt så att säga? Jag kan ju inte använda , tecknet.
**************************************************************************************************************************
// Fuktmätare för luftfuktighet.
// Pic16f690. Intern oscillator 4Mhz. Extern MCLR
unsigned int Value;
void main(){
TRISC = 0b00000000; //PORTC är utgångar
TRISB = 0b00000000; //PORTB är utgångar
TRISA = 0b00100000; //PORTA, RA2= ADC ingång, andra utgångar
ADCON1 = ??????????;
while(1){
Value = ADC_read(3); //Read ADC channel 3.
if( Value == ????????){ //Läser in värdet value och jämför det
PORTA = xxxxx ; // med ett värde, ex binärt för 2V
PORTB = xxxxx ; //om dessa stämmer tänds olika segment
PORTC = xxxxx ; //annars jämförs nästa "if" sats
}
if(Value == ???????){
PORTA = xxxxx ;
PORTB = xxxxx ;
PORTC = xxxxx ;
}
}
}
Jag har alltså tänkt läsa in ett värde mellan 0,75-3,9V på pinnen som heter AN2 (tror den räknas som kanal 3). Därefter ska jag jämföra värdet med ett förutbestämt värde. Ex så vet jag att en spänning på 2V motsvarar ca 40% relativ luftfuktighet. Är värdet rätt kommer rätt segmenkombination att tändas och visa 40 på displayen. Den lilla kod jag knackat ner följer. Och med denna kommer även frågorna. Jag använder MikroC
Frågor.
1/ Jag är inte helt säker på hur jag sätter RA2 som ADC ingång och resten av pinnarna som digitala utgångar.
2/ Värdet från ADC'n lägger jag i Value. Hur ska jag jämföra Value med ett värde som ex 2,453V? Hur ska jag skriva värdet 2,453 binärt så att säga? Jag kan ju inte använda , tecknet.
**************************************************************************************************************************
// Fuktmätare för luftfuktighet.
// Pic16f690. Intern oscillator 4Mhz. Extern MCLR
unsigned int Value;
void main(){
TRISC = 0b00000000; //PORTC är utgångar
TRISB = 0b00000000; //PORTB är utgångar
TRISA = 0b00100000; //PORTA, RA2= ADC ingång, andra utgångar
ADCON1 = ??????????;
while(1){
Value = ADC_read(3); //Read ADC channel 3.
if( Value == ????????){ //Läser in värdet value och jämför det
PORTA = xxxxx ; // med ett värde, ex binärt för 2V
PORTB = xxxxx ; //om dessa stämmer tänds olika segment
PORTC = xxxxx ; //annars jämförs nästa "if" sats
}
if(Value == ???????){
PORTA = xxxxx ;
PORTB = xxxxx ;
PORTC = xxxxx ;
}
}
}