Fläktvarvräknare med raspberry pi
Fläktvarvräknare med raspberry pi
Tröttnade på att inte ha någon koll på vad lambdaregulatorn sysslar med så jag knopade ihop en varvräknare för fläkten med en ir-diod och ir-mottagare kopplad till en ingång på raspberryn och en bit aluminiumtejp på fläkthjulets nav.
Petade in kortet i ett "telefonuttag" från classe för att snygga till det lite:
Första fullständigt naiva programversionen i python tar 2.6% av raspberryns cpu vid 1800rpm. Testade med borrmaskinen upp till 4500rpm och det blev ca 10% så det finns nog marginaler så det räcker. Jag trodde faktiskt att jag skulle hamna att koda det i c, men det verkar ju helt onödigt. En interrupt på nedåtgående kant på ingången läser av en frilöpande megaherztimer och sparar undan diffen till förra värdet i en buffer. Första versionen av filtrering sorterar 5 senaste sampel och tar medeltalet av de tre mellersta + lite lowpass på det. Verkar funka helt tillfredsställande trots att interrupthantering via python har minst sagt varierande latency.
Ska nog fixa någon bild på monteringen i brännaren i något skede, men det hann jag inte med ikväll och dessutom ska jag nog fixa ett snyggare montage än en fasttejpad bit spikband tvärs över insuget.
Sedan blir det ett plugin till PellMon för loggning av lambdaregulatorns pådrag räknat från differensen mellan norm-varvtal och uppmätt varvtal, och alarm vid avvikande varvtal kommer ju på köpet. Och koden kommer naturligvis på github...
Onödigt men skoj!
Petade in kortet i ett "telefonuttag" från classe för att snygga till det lite:
Första fullständigt naiva programversionen i python tar 2.6% av raspberryns cpu vid 1800rpm. Testade med borrmaskinen upp till 4500rpm och det blev ca 10% så det finns nog marginaler så det räcker. Jag trodde faktiskt att jag skulle hamna att koda det i c, men det verkar ju helt onödigt. En interrupt på nedåtgående kant på ingången läser av en frilöpande megaherztimer och sparar undan diffen till förra värdet i en buffer. Första versionen av filtrering sorterar 5 senaste sampel och tar medeltalet av de tre mellersta + lite lowpass på det. Verkar funka helt tillfredsställande trots att interrupthantering via python har minst sagt varierande latency.
Ska nog fixa någon bild på monteringen i brännaren i något skede, men det hann jag inte med ikväll och dessutom ska jag nog fixa ett snyggare montage än en fasttejpad bit spikband tvärs över insuget.
Sedan blir det ett plugin till PellMon för loggning av lambdaregulatorns pådrag räknat från differensen mellan norm-varvtal och uppmätt varvtal, och alarm vid avvikande varvtal kommer ju på köpet. Och koden kommer naturligvis på github...
Onödigt men skoj!
Senast redigerad av Honda den ons 22 jan, 2014 10:31, redigerad totalt 1 gånger.
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: Fläktvarvräknare
Inte alls onödigt bara skoj
//Hasse
//Hasse
Re: Fläktvarvräknare
Snyggt jobbat Honda, jag har varit inne på att läsa fläkten men inte gått den manuella vägen utan snarare läsa tacho returen från fläkten själv, detta är ju mkt lättare!
/Peter
/Peter
Panna: Effecta 220 tidigare Nibe City
Brännare: BioNordic B16GL med modulerande drift, tidigare PX21
Dragbegränsare: Tigex 25(liten)
Ventilation: Flexit Uni3 FTX
Hus: två plan 160kvm tot, 23grader inne.
Förbrukning: 6-7 pall
Brännare: BioNordic B16GL med modulerande drift, tidigare PX21
Dragbegränsare: Tigex 25(liten)
Ventilation: Flexit Uni3 FTX
Hus: två plan 160kvm tot, 23grader inne.
Förbrukning: 6-7 pall
Re: Fläktvarvräknare
Lite bilder på fläkten skulle vara kul.
Egor duplomat D1F 1978 Pellx 2001 7.0 Tigex25 Bulkföråd Termomatic ERA
Re: Fläktvarvräknare
Ok, så här ser det ut nu (men förhoppningsvis inte länge till):
Tänkte egentligen att dosan bara skulle "kika över kanten" på fläkthuset, men ögat hamnade lite för långt från navet då. Men det gick ju så här också, och nej den blockerar inte märkbart luftflödet.
Tänkte egentligen att dosan bara skulle "kika över kanten" på fläkthuset, men ögat hamnade lite för långt från navet då. Men det gick ju så här också, och nej den blockerar inte märkbart luftflödet.
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: Fläktvarvräknare
Provade det här http://fritzing.org/download/ igår. Helt användbart för att rita upp små kretscheman, så här kopplade jag 'ögat' ifall någon är intresserad:
Fritzing kan även autorouta till enkel eller dubbelsidig pcb och till och med routa till breadboard!
Komponenter valda ur skrotlådan utan större eftertanke, transistorn bara för att ir-sensorn vill ha minst 5V och raspberryn 3,3V på ingången.
Och för att vara komplett så kan jag ju lägga till kodsnutten jag testade med:
Fritzing kan även autorouta till enkel eller dubbelsidig pcb och till och med routa till breadboard!
Komponenter valda ur skrotlådan utan större eftertanke, transistorn bara för att ir-sensorn vill ha minst 5V och raspberryn 3,3V på ingången.
Och för att vara komplett så kan jag ju lägga till kodsnutten jag testade med:
Kod: Markera allt
#! /usr/bin/python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import mmap
import sys
def timer():
m.seek(4)
s = m.read(8)
o = 0
for c in range(0,7):
o += ord(s[c])<<(8*c)
return o
def edge_callback(channel):
global last_time
global buf
global index
global f
global lapse
time = timer()
timediff = time - last_time
last_time = time
buf[index] = timediff
if index == 4:
index = 0
else:
index += 1
lapse += timediff
l = buf
l.sort()
s = l[2]
if s>1:
f1 = 1/float(s) * 1000000 * 60
f=(f + f1) / 2
else:
f=0
if lapse < 500000:
return
lapse = 0
s='='*int(f/25)+'>'
a=str(int(f))
s=a+s[len(a):]
l=len(s)
s=s+' '*(100-l)
sys.stdout.write('\r'+s)
sys.stdout.flush()
print " 0 150 300 450 600 750 900 1050 1200 1350 1500 1650 1800 1950 2100 2250 2400 "
f = open ('/dev/mem','r')
m = mmap.mmap(f.fileno(), 4096, mmap.MAP_SHARED, mmap.PROT_READ, offset=0x20003000)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(15, GPIO.IN)
f = 0
buf = [0,0,0,0,0]
index = 0
last_time=timer()
lapse = 0
GPIO.add_event_detect(15, GPIO.FALLING, callback=edge_callback)
a=raw_input()
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: Fläktvarvräknare med raspberry pi
Fläktvarvtalet med i loggen nu:
och koden hittas här: https://github.com/motoz/PellMon. Den missar toppen på renblåsningarna var 5:e minut med 1 sampel/10s, ska fixa nåt filter som hittar såna toppar i något skede.
och koden hittas här: https://github.com/motoz/PellMon. Den missar toppen på renblåsningarna var 5:e minut med 1 sampel/10s, ska fixa nåt filter som hittar såna toppar i något skede.
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: Fläktvarvräknare med raspberry pi
Nu filtreras de riktiga peakarna fram som de ska:
Fläkt-lambda-regulatorn är en PD regulator, så fläkthastigheten fladdrar en del pga den deriverande termen i den här bilden. Kan ju inte låta bli att tweaka regulatorn i det oändliga, men jag tycker att PD verkar fungera bättre än bara P (eller inget alls). Det finns även en långsamt integrerande term som justerar pelletmatningen. Sonden är en lsm11 som Icecap har dömt ut som obrukbar , jag kan hålla med om att den nog kunde vara betydigt exaktare, men tycker ändå att den fyller en funktion.
Fläkt-lambda-regulatorn är en PD regulator, så fläkthastigheten fladdrar en del pga den deriverande termen i den här bilden. Kan ju inte låta bli att tweaka regulatorn i det oändliga, men jag tycker att PD verkar fungera bättre än bara P (eller inget alls). Det finns även en långsamt integrerande term som justerar pelletmatningen. Sonden är en lsm11 som Icecap har dömt ut som obrukbar , jag kan hålla med om att den nog kunde vara betydigt exaktare, men tycker ändå att den fyller en funktion.
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger