Sensorer, hur läsa av? *KLAR*
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Tyvärr har jag inte kvar koden.
Gjorde bara en snabb test med MikroBasic och en PIC12F675.
I princip gjorde jag såhär:
* Gör I/O-pinnen till en utgång och sätt den hög (5V) i en sekund.
* Gör I/O-pinnen till en utgång.
* Starta en timer och knappa ihop en räknare som stoppar när I/O-pinnen blir låg.
Sedan används resultatet av "tidtagningen" för att bestämma hur lång tid urladdningen tog, dvs hur stort motståndet (sensorn) var.

Gjorde bara en snabb test med MikroBasic och en PIC12F675.
I princip gjorde jag såhär:
* Gör I/O-pinnen till en utgång och sätt den hög (5V) i en sekund.
* Gör I/O-pinnen till en utgång.
* Starta en timer och knappa ihop en räknare som stoppar när I/O-pinnen blir låg.
Sedan används resultatet av "tidtagningen" för att bestämma hur lång tid urladdningen tog, dvs hur stort motståndet (sensorn) var.
Som jag ser det är det ca 3 saker jag inte gjorde, först:
*Hur fick du den till 5v? kan PICen höja så mycket?
*En sekund, jag körde med en ms!
*Räknare? jag tog och nollade TMR0 och lät den räkna upp och sen när pinnen blev "0" så sparade jag värdet i en variabel, c-kod:
EDIT: Borde det inte fungera?
EDIT2: Hur presenterade du resultatet? Till datorn?
*Hur fick du den till 5v? kan PICen höja så mycket?
*En sekund, jag körde med en ms!
*Räknare? jag tog och nollade TMR0 och lät den räkna upp och sen när pinnen blev "0" så sparade jag värdet i en variabel, c-kod:
Kod: Markera allt
char tid; //Variabel att lagra värdet i
TRISB.5=0; // Sätt porten som utgång
PORTB.5=1; // Dra pinnen till logisk 1
//vänta 1 sekund
TRISB.5=1; // Sätt porten till ingång
TMR0=0; //Nolla TMR0
while(PORTB.5==1)
{
tid=TMR0;
}
EDIT2: Hur presenterade du resultatet? Till datorn?
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
"Hur fick du den till 5v? kan PICen höja så mycket?"
Det beror på matningspänningen, men om PIC-kretsen matas med 5V så hamnar det på 5V, eller åtminstone väldigt nära. Har inte kollat på länge...
"Räknare? jag tog och nollade TMR0 och lät den räkna upp"
Det gjorde jag också. I mitt förra inlägg skrev jag:
"Starta en timer och knappa ihop en räknare"
Jag presenterade resultatet genom att koppla lysdioder till resterande utgångar och låta dem visa resultatet binärt. Snabb testlösning.
Jag programmerar inte i C, men jag tycker ändå att det fattas massa saker i din kod. T.ex kollen av timer-interrupt, initiering av tja, allt möjligt.
Det beror på matningspänningen, men om PIC-kretsen matas med 5V så hamnar det på 5V, eller åtminstone väldigt nära. Har inte kollat på länge...
"Räknare? jag tog och nollade TMR0 och lät den räkna upp"
Det gjorde jag också. I mitt förra inlägg skrev jag:
"Starta en timer och knappa ihop en räknare"

Jag presenterade resultatet genom att koppla lysdioder till resterande utgångar och låta dem visa resultatet binärt. Snabb testlösning.

Jag programmerar inte i C, men jag tycker ändå att det fattas massa saker i din kod. T.ex kollen av timer-interrupt, initiering av tja, allt möjligt.

Nu fungerar det!
Fast några saker måste fixas:
Hur stor är risken för "spännings topp" dvs det som 100ohm motståndet skulle motverka? Och vad händer om det skulle hända? PICen går sönder?
JimmyAndersson: När du körde med 15Kohm över kondingen så fick du vänta ett tag på värden, eller hur?
Jobbar på att skriva interrupt rutinen för TMR0 nu(har alldrig använt interrupt förut).
OFFT: Vilka standard motstånd tycker ni att man ska köpa in, dvs bra att ha delar?
EDIT: Aj då! Det blev 2st
Hur för jag bort det första??
Fast några saker måste fixas:
Hur stor är risken för "spännings topp" dvs det som 100ohm motståndet skulle motverka? Och vad händer om det skulle hända? PICen går sönder?
JimmyAndersson: När du körde med 15Kohm över kondingen så fick du vänta ett tag på värden, eller hur?
Jobbar på att skriva interrupt rutinen för TMR0 nu(har alldrig använt interrupt förut).
OFFT: Vilka standard motstånd tycker ni att man ska köpa in, dvs bra att ha delar?
EDIT: Aj då! Det blev 2st

> Vilka standard motstånd tycker ni att man ska köpa in,
En av de standard satser som t.ex C-O eller Kjell har.
Skulle bara bli löjligt att börja räcka upp olika värden...
> Hur stor är risken för "spännings topp" dvs det som 100ohm motståndet skulle motverka?
Den har inte den fuktionen. Tänk efter vad som händer när kondingen
är helt ur-laddad och pinnen lägger 5V direkt till den...
En av de standard satser som t.ex C-O eller Kjell har.
Skulle bara bli löjligt att börja räcka upp olika värden...

> Hur stor är risken för "spännings topp" dvs det som 100ohm motståndet skulle motverka?
Den har inte den fuktionen. Tänk efter vad som händer när kondingen
är helt ur-laddad och pinnen lägger 5V direkt till den...
> EDIT: Det finns inget kryss och ingen "Ta bort inlägg" knapp
Enbart på det *sista* inlägget i tråden, skulle inte vara bra
om man kan plocka bort inlägg inne i tråden som andra kanske
redan har svarat på...
Man får strömrusning om man lägger pinnen hög direkt till en (urladdad)
konding utan strömbegränsning. Spelar mer eller mindre roll
beroende på kondensatorns storlek, så klart...
Enbart på det *sista* inlägget i tråden, skulle inte vara bra
om man kan plocka bort inlägg inne i tråden som andra kanske
redan har svarat på...
Man får strömrusning om man lägger pinnen hög direkt till en (urladdad)
konding utan strömbegränsning. Spelar mer eller mindre roll
beroende på kondensatorns storlek, så klart...
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Ok, det blir till att köpa motstånd, har hitils kört med ca 60ohm.
Har nästan inga "standard" delar tex motstånd...
Ska nu ta och sätta ihop några gamla h-bryggor som jag köpte för ett tag sedan, får hoppas att dom fungerar med lego motorerna.
Fråga om h-bryggor: vad händer om man sätter en pwm pinne som går in i bryggan till 1? Bräns den sönder då? Det varierar så klart beroende på konstruktion, men vad brukar hända?
EDIT: Tack JimmyAndersson
EDIT2: Håller på att skriva ett bättre sensor program och skulle skriva min första interrupt rutin.
Och som vanligt stöter man på problem direkt, efter lite kollande så verkar det som om PIC16F628 inte har TMR0 interrupt.
Snälla säg att jag har fel!
Har nästan inga "standard" delar tex motstånd...
Ska nu ta och sätta ihop några gamla h-bryggor som jag köpte för ett tag sedan, får hoppas att dom fungerar med lego motorerna.

Fråga om h-bryggor: vad händer om man sätter en pwm pinne som går in i bryggan till 1? Bräns den sönder då? Det varierar så klart beroende på konstruktion, men vad brukar hända?
EDIT: Tack JimmyAndersson

EDIT2: Håller på att skriva ett bättre sensor program och skulle skriva min första interrupt rutin.
Och som vanligt stöter man på problem direkt, efter lite kollande så verkar det som om PIC16F628 inte har TMR0 interrupt.
Snälla säg att jag har fel!