|
| Progamering af vindmåler til comp Fra : Boje1 | Vist : 1553 gange 400 point Dato : 26-12-04 00:22 |
|
Hej folkens ! Er der nogen af jer der vil / kan programere en vindmåler der skal køre under win xp pro med et feldt på skrive bord hvor man kan aflæse vindhastighed i m/sek , km/t og beaufort det ville evt. heller ikke være dårligt med en visning af vindretning.
Programmet skulle gerne starte op sammen med xp .
Jeg har 2 stk comport a og b 9 pins til rådighed på min comp.
Da måleren der skal side på taget ikke er lavet kunne jeg forestille mig noget i stil med en cykelcomp hvor man kan angive omkreds på hjul for på den måde at kunne kalibrere den .
Jeg indrømmer blankt jeg har ikke et klap forstand på at programere så hvis det er fulstændig umuligt at lave eller det vil tage alt for lang tid så slå mig venligst ikke ned .
Ps. til den der vil kan er der selvfølgelig flere point`s
PPs. Undskyld hvis dette spørgsmæl kommer flere gange da jeg ikke kan finde det først jeg skrev har jeg lavet et nyt håber det er ok.
Hilsen Bo
| |
|
Jeg kan måske godt hjælpe dig med at lave programmet, men jeg gider ikke lave det hele for dig.
Det mindste du skal være villig til er at kunne oversætte koden og lave små rettelser til den.
| |
| Kommentar Fra : Boje1 |
Dato : 26-12-04 01:26 |
|
Hej BertelBrander !
Jeg er selfølgelig villig til at oversætte koden og lave rettelser i programmet hvis du kan lære eller forklare mig hvordan man gør for jeg aner som sagt ikke en dyt om programering
| |
|
At lave en hastigheds måler burde være simpelt, man sætter bare hjulet til at lave en puls på RX (modtage) benet på COM-Port, og programmet til at måle hvor lang tid der er mellem pulserne. Jeg er ikke så meget inde i hardwaren, så du skal måske lige læse lidt på nettet om hvordan man sætter elektronikken sammen.
Så laver man "bare" en lille windows applikation til at vise resultatet i.
Jeg laver normalt den slags programmer i C++, man kan downloade en glimrende C++ kompiler (dvs en oversætter) her:
http://www.borland.com/products/downloads/download_cbuilder.html
Jeg kan godt prøve at strikke en test applikation sammen en af de første dage.
| |
| Kommentar Fra : Boje1 |
Dato : 26-12-04 12:42 |
|
Hej BertelBrander !
Elektronikken hmm jeg havde forestillet mig noget i stil med at der fra stikket i comp blev sendt strøm ud til måleren hvor i der så skulle side et magnetisk relæ lige som i en cykkelcomp der ved hver omgang ville trække og sende en impuls tilbage til comp, eller er der mere elektronik ved du evt. også hvorfor nogle ben der skal bruges i stikket ?
Er det comipiler eller enterprise trial jeg skal hente og er det gratis at downloade der fra ?
| |
|
Det er Compiler du skal downloade.
Så vidt jeg ved skal du forbinde RX og GROUND i stikket for at lave en puls. Jeg ved ikke om man skal have en "pull-up" modstand på.
Jeg er ikke ret meget inde i hardware'n, så prøv at søg lidt på nettet, f.ex. efter RS232 (som er det tekniske udtryk for Com-port).
Hvis (/når) jeg kan finde et stik prøver jeg lige om jeg kan lave en simpel test opstilling.
| |
| Kommentar Fra : Yumatci |
Dato : 26-12-04 21:53 |
|
Her er et billede af serial porten: http://www.arcelect.com/9_PIN_PIN_OUT.GIF
det bertel hentyder til med RX = Pin 2 det vil sige der hvor der står 2 på det billede fra overstående link og Ground = Pin 5 som er stel forbindelse svarer til tal nummer 5 på billedet bare lige sådan du er med på hvilke pins du skal bruge i serial porten!
Undskyld jeg blander mig men er også selv begynder inden for dette område og er selv igang med at lære det så jeg følger med og prøver af sammen med jer
| |
|
Jeg har strikket et lille test program sammen.
Det udskriver en . hvergang du forbinder pin 2 (RX) og pin 7 (RTS), prøv det.
Når du har fået det til at virke, laver jeg lige en forbedret udgave.
#include <stdio.h>
#include <windows.h>
void SetTimeOut(HANDLE Port, int MSec)
{
COMMTIMEOUTS commtimeouts;
GetCommTimeouts(Port, &commtimeouts);
commtimeouts.ReadIntervalTimeout = MSec;
commtimeouts.ReadTotalTimeoutMultiplier = 1;
commtimeouts.ReadTotalTimeoutConstant = MSec;
SetCommTimeouts(Port, &commtimeouts);
}
void Rx(HANDLE Port)
{
char Buffer[128];
DWORD Length = 0;
DWORD ErrorType = 0;
ReadFile(Port, Buffer, 128, &Length, 0);
ClearCommError(Port, &ErrorType, 0);
if(Length || ErrorType)
printf(".");
}
int main(void)
{
DCB dcb;
HANDLE ComPort = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
GetCommState(ComPort, &dcb);
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
dcb.fErrorChar = TRUE;
dcb.fParity = TRUE;
dcb.Parity = ODDPARITY;
dcb.fAbortOnError = TRUE;
dcb.fOutxCtsFlow = 1;
SetCommState(ComPort, &dcb);
SetTimeOut(ComPort, 1);
while(1)
Rx(ComPort);
CloseHandle(ComPort);
return 0;
}
| |
| Kommentar Fra : Boje1 |
Dato : 28-12-04 22:42 |
|
Hej BertelBrander !
Jeg har hentet compileren og kopieret teksten over i notesblok og fået compileren til at oversætte men er ikke sikker på at det er rigtigt det jeg gør for hvis jeg kikker i det dokument bag efter så ser det ud lige som før har du ikke et par
gode råd til mig.
Bo
| |
|
For at kompilere kører du kommandoen:
bcc32 whatever.cpp
(Hvis filen hedder whatever.cpp). Så skulle den gerne have lavet en whatever.exe (og måske et par andre filer der ikke skal bruges).
Den ændrer ikke på din .cpp fil.
Hvis ikke den har lavet en exe fil skal du lige skrive her hvad kompileren (bcc32) skriver.
| |
| Kommentar Fra : Boje1 |
Dato : 28-12-04 23:19 |
|
Har nu fundet ud af at det er et dos program er det korekt ?
Den skriver :
Error E2194: could not find file ´vind.ccp´
Jeg tror selv det er fordi jeg har lagt filen et forkert sted mit gæt var ind hvor bcc32 ligger er det det rigtige sted eller hvor skal den ligge ?
Bo
| |
| Kommentar Fra : Boje1 |
Dato : 28-12-04 23:27 |
|
´vind.ccp´ skulle have stået ´vind.cpp´
| |
|
Filen kan ligge hvor som helst.
Du skal have puttet stien til den mappe hvor bcc32.exe ligger i din PATH (hvilken Windows ?)
Du skal også lave et par .cfg filer, kik i den readme.txt fil der ligger i den mappe hvor du instalerede kompileren.
Når du har det på plads åbner du en dos-box og flytter dig til den mappe hvor vind.cpp ligger (brug cd kommandoen).
Så kører du:
bcc32 vind.cpp
| |
| Kommentar Fra : Boje1 |
Dato : 29-12-04 00:02 |
| | |
|
Du tilføjer til PATH'en ved at trykke WindowsTast + Pause/Break -> Avanceret-> Miljø Variable -> I den nederste liste finder du PATH, trykker Rediger og tilføjer mappen hvor bcc32.exe ligger til VariabelVærdi, adskilt med en ;
Så åbner du en kommando prompt ved at vælge Start->Kør -> cmd <enter>
| |
| Kommentar Fra : Boje1 |
Dato : 29-12-04 00:23 |
|
Hvis du nu også kan få det over dit hjert at hjælpe mig med at lave de .cfg filer ville jeg være meget glad for jeg fatter desværre ikke en meter af det der står i den readme.txt
Bo
| |
|
Der skal være en bcc32.cfg der skal se ca. sådan ud:
-I"D:\Program\Bcc55\include"
-L"D:\Program\Bcc55\lib"
Du skal ændre D:\program\bcc55 så det passer med din sti, men beholde -I og -L i starten, du skal også beholde \include og \lib i enden.
Den anden skal heddeilink32.cfg den skal bare indeholde:
-L"D:\Program\Bcc55\lib"
Og skal også ændres som ovenfor.
| |
| Kommentar Fra : Boje1 |
Dato : 29-12-04 01:17 |
|
Hmm ved sku snart ikke om det er mig der for dum nu har jeg lavet de filer med de ændringer som du skrev, har lavet dem i notpad og gemt dem ind i mappen bin som bcc32.cfg og eilink32.cfg men de ligger bare som 2 stk tekst dokumenter med det navn er det rigtigt eller har jeg igen gjort noget forkert ?
For den skriver igen :
Error E2194: could not find file ´vind.cpp´
| |
| Kommentar Fra : Yumatci |
Dato : 29-12-04 11:08 |
|
Hej Boje1
Du kan hente et nemere begynder program til at compile med her: http://voxel.dl.sourceforge.net/sourceforge/dev-cpp/devcpp4.zip
Pak det ud og installer det!
Tryk ind i programmet når du er inde trykker du op i "Options" oppe i menuen for oven så trykker du på "Compiler
options" nu kommer der en vindue frem med 6 tekstboxe til at skrive i skriv "-lgdi32 -lopengl32 -lglu32" i den første box UDEN parenteserne! Tryk så på "Ok" knappen nu er du klar til at gå igang! Vælg "File" oppe i menuen og vælg så "New source file"! Nu kommer der et vindue frem hvor der står noget slet alt hvad der står der! og skriv koden ind som Bertel har givet dig! Når du har skrevet koden så tryk op i "Execute" og tryk "Compile" Skriv det navn filen skal have og vælg det sted hvor den skal gemmes og tryk "Gem"! nu compiler den og hvis der kommer fejl så kan du jo skrive dem til Bertel her inde!
| |
| Kommentar Fra : Boje1 |
Dato : 29-12-04 13:37 |
|
Hej Yumatci !
Tak for programmet det er jo lige til at have med at gøre
Bo
| |
| Kommentar Fra : Boje1 |
Dato : 29-12-04 13:52 |
|
Hej Bertel !
Har fået compilet programet med det progam som Yumatci linkede til så nu kører det .
Når jeg trykker på vind.exe som filen hedder så åbner der sig et dos vindue og hver gang jeg forbinder ben 2 og 7 kommer der 2 prikke i vinduet.
Håber at det var det der skulle ske ?
Hvad skal der så ske nu ?
Mangler du flere info fra mig for at kunne lave programmet ?
| |
|
Jeg/vi skal have eksperimenteret lidt mere med programmet så der komme nøjagtigt én prik hver gang man forbinder de to pinde.
Så skal der bare tages tid på hvor lang tid der går mellem "prikkerne" og dette skal omsættes til en vindhastighed. Til slut skal det laves som et lille windows program.
Jeg arbejder lidt videre, det vil sansynligvis tage et par dage.
| |
| Kommentar Fra : Boje1 |
Dato : 29-12-04 21:57 |
|
Hmm
Spørgmål kunne det evt. laves som en form for cykel komputer ? (har på nettet set en der har brugt den til det.)
Hvor man ved hjælp af omkredsen kan fin justere og få det til at passe til forskellige vindhjul, og ud fra det omregne til vindhastighedder ved hjælp af forskellige gange eller dele faktorer ?
Det er bare ok at det tager et par dage du skal jo osse have tid til de ting du ellers laver jeg er bare glad for at du gider at hjælp mig.
Bo
| |
|
Man kan godt lave det som et cykel komputer. Der er det en magnet der påvirker en kontakt.
At finde forholdet mellem hastighed på cykelhjulet og vinden er nok lidt af en opgave, som jeg vil lade være op til dig.
Jeg laver programmet så du kan angive en faktor til at omregne mellem de to hastigheder.
| |
| Kommentar Fra : Boje1 |
Dato : 29-12-04 23:16 |
|
At finde foreholdet mellem vindmåler/cykkelhjul og om sætte til vind hastighed skulle ikke være det stor problem. når hjulet har kørt x antal omgange har man kørt x antal meter det kan udlæses på cykkelcomp som km/t og hvis jeg får den rigtige diameter sat ind på den vindmåler jeg skal have lavet så er det lige med vindhatighed i km/t
Her er et link til en simpel vindmåler lavet af cykelcomp så har du en ide om hvad det er jeg tænker på
http://www.kgs.wittmund.de/wx/anemo.htm
1. på en cykkel comp kan man angive omkredsen på hjulet så man derved kan aflæse hastighed uanset om det er et
stort eller et lille hjul er det sådan du evt vil lave det for så har jeg jo hastighed i km/t rigtigt ??
2. Hvis det er det må du gerne lave 2 feldter hvor jeg kan skrive en gange faktor så jeg kan få en visning i m/sek og
en i beaufort (og et feldt med gennemsnits vind målt over 10 min)
3. Tillæg som sagt jeg har ikke forstand på programering men ider mangler der ikke er det muligt at lave en form for logfil
hvor gennemsnitvind bliver gemt med angivelse af klokke slet som kan resetes af mig for at filen ikke skal blive for stor
Punkt 1 og 2 er et meget stort ønske.
Hvis det er meget svært eller tage for lang tid at lave det der står i ( ) i punkt 2 er det ok.
Punkt 3 tja hvis du har lyst ville det jo bare være dejligt men se det nu kun som en tanke hvis du ikke lave det er det da helt ok det er jo op til dig hvor meget af din tid du vil bruge på det om det så osse tager mer en et par dage er det osse ok.
Hilsen Bo
| |
|
Jeg brugte et gammelt stik og en pincet. Er i færd med at lave en mere triftsikker løsning med en ledning og en kontakt.
Jeg kikker på programmet i aften (og i moren hvis ikke jeg bliver færdig i aften).
| |
|
Ja, jeg tror at det er et stik fra en mus.
Du kan også købe et stik i den nærmeste elektronik forretning.
| |
|
Nej, jeg ved ikke hvad der er hvad.
Du kunne prøve dig frem, jeg tror ikke der er nogen risiko for at brænde det af.
Det er dog ikke sikkert at pin 7 er ført igennem.
Du kan også købe et volt/ohm/ampere meter, de koste ca. 50,- hos Harald Nyborg.
| |
| Kommentar Fra : Boje1 |
Dato : 02-01-05 00:19 |
|
Yumatci
man kan rive stikket på en mus fra hinanden og lode nye ledninger i det har jeg gjort og det virker fint
| |
| Kommentar Fra : Yumatci |
Dato : 02-01-05 09:44 |
|
Hej bertel
Nu ved jeg ikke lige hvor den nærmeste elektronik forhandler er ved mig! Men kan du give et link så jeg kan bestille sådan et stik over nettet???
| |
|
Der er en glimrende butik her: http://www.aarhus-radio-lager.dk/ det letteste er at ringe og snakke med dem.
Der er også: http://www.brinck.dk/
Jeg har fået lavet en forbedret version. Det er en lillle windows app, så hvis du oversætter med borland skal der tilføjes -tW til kommandolinien. Programmet kan også oversættes med Dev-cpp/MinGW.
Det viser tre værdier: Seneste omgangstid, gennemsnit af de sidste 10 omgangstider og en omregnet vindhastighed.
Den ignorerer omgangs tider mindre end 10 ms, da det kan være "prel" fra kontakten, du bør ikke lave hjulet så det kører mere end 100 omgange pr. sek.
Koden ligger her: http://home20.inet.tele.dk/midgaard/vind.cpp
Du kan ændre på ConvertingFactor så den omregner rigtigt fra omdregningstid til vindhastighed.
Der mangler en log-fil, at udskrive i beaufort og vise gennemsnits tiden for de sidste 10 min; dette vil blive lavet en af de første dage.
| |
| Kommentar Fra : Boje1 |
Dato : 02-01-05 15:41 |
|
Hej bertel !
Får denne melding når jeg prøver at compile programmet.
line 4
unit c:\docume~1\bo\skrive~1\vindmÅ~1\vind.cpp
meassage sstream: No such file or directory
har du en ide om hvad der er galt ?
| |
| Kommentar Fra : Yumatci |
Dato : 02-01-05 15:58 |
| | |
| Kommentar Fra : Yumatci |
Dato : 02-01-05 16:02 |
| | |
| Kommentar Fra : Boje1 |
Dato : 02-01-05 17:23 |
|
Tak Yumatci
Hej Bertel Har fået det oversat og det kører.
Er det kun ConvertingFactor man kan ændre på for at få vindmåleren til at passe eller kan man også angive en diameter på vindhjul.
Er det som den endelige version kommer til at se ud ?
For hvis det er hvad er de 2 første feldter så til last og average eller kommer der andre info ind i dem ?
Når pogrammet kører er der osse et dos vindu på skærmen er det muligt at fjerne det ?
Ellers ser det jo meget lovende ud
Hilsen Bo
| |
|
Programmet bliver pænere, jeg regner med at lave en dialog box til diverse opsætninger.
Pt. er der kun ConvertingFactor, men jeg kan godt lave det så man kan angive en diameter.
Last er sidste omgangs tid.
Average er gennemsnit af sidste 10 (FilterLength) omgange.
Disse er der mest for debugging.
For at fjerne DOS vinduet skal du tilføje -mwindows til kompilerens kommando linie: Project -> Project Options -> Parameters -> C++ Compiler og Linker.
| |
| Kommentar Fra : Boje1 |
Dato : 02-01-05 21:47 |
|
Den ændring er det i det program som du har linket til eller det Yumatci har sendt eller i selve programmet ?
Da det program du har linket til ikke kom til at køre (nok min fejl )og hvis jeg følger den opskrift i programmet fra Yumatci
kan jeg ikke skrive noget ind da boksen er nedtonet så der med ikke aktiv eller kan du hjælpe med Yumatci ?
| |
|
Jeg tror du skal tilføje -mwindows til Tools-> Compiler Options
De få gange jeg har brugt Dev-Cpp har jeg oprettet et project først.
| |
| Kommentar Fra : Boje1 |
Dato : 03-01-05 07:42 |
|
Det var jo lige det der skulle til Tak.
Jeg har fået et problem med omregning fra m/sek til beaufort som du kan se dækker 1 Bft over et større område så der er ikke rigtig nogen beregnings faktor så det er ikke nødvendigt at lave det feldt øv.
Hvis du da ikke har en ide til hvordan det kan løses er det evt. muligt at skrive noget i stil med hvis m/sek er større end x og mindre end z så er det lige med beaufort ?
Hvis det er muligt og der så skal skrives mang ens linier og du kan forklare mig hvordan kan jeg nok gøre det hvis de da ikke skal skrives forskellige steder i programmet
Bft. Knots m/s Km/h
0 0-1 0-0.2 0-1
1 1-3 0.3-1.5 1-5
2 4-6 1.6-3.3 6-11
3 7-10 3.4-5.4 12-19
4 11-16 5.5-7.9 20-28
5 17-21 8.0-10.7 29-38
6 22-27 10.8-13.8 39-49
7 28-33 13.9-17.1 50-61
8 34-40 17.2-20.7 62-74
9 41-47 20.8-24.4 75-88
10 48-55 24.5-28.4 89-102
11 56-63 28.5-32.6 103-117
12 64-71 32.7-36.9 118-133
| |
|
Under WM_TIMER bliver de to tal omregnet fra double (floating point format) til en streng, og udskrevet i de to felter. SetDlgItemText er den funktion der skriver data.
Du må gerne prøve at ændre det, ellers kan jeg godt, det bliver først i mogen aften.
| |
| Kommentar Fra : Boje1 |
Dato : 04-01-05 07:24 |
|
Hej Bertel !
Jeg er ikke helt sikker på hvad du mener så jeg har ikke prøvet på at ændre noget har dog fundet ud af at jeg kan ændre på den del af teksten som er skrevet med rødt så der står noget andet i programmet når det kører.
Hvis du evt. kan forklare mig det lidt bedre eller komme med et eksempel så jeg kan gennemskue det er jeg villig til at prøve.
| |
|
En hurtig guide.
Hvis du vil ændre den første linie så den udskriver beaufort og ikke den seneste måling skal du:
1: Ændre disse linier under WM_TIMER:
std::string Str = ToString(MyNew);
SetDlgItemText(hwndDlg, IDC_LAST, Str.c_str());
Til:
std::string Str;
Hvis du ændrer ConvertingFactor så ConvertingFactor/MyAverage er vindhastighed i ms kan du til slut i blokken efter WM_TIMER* skrive:
double VindSpeedInMS = ConvertingFactor/MyAverage;
Her erklæres en variabel af typen double (en floating point type) som sættes til at være ConvertingFactor/MyAverage, ; afslutter dette "statement".
Du kan så lave en variabel Beaufort som skal være vindhastigheden i beaufort, beaufort er et heltal (1-12) så vi kan bruge en int (integer/heltal):
int beaufort;
Du kan så lave en række if/else:
if(VindSpeedInMS > 64)
Beaufort = 12;
else if(VindSpeedInMS > 56)
Beaufort = 11;
...
else
Beaufort = 1;
Du har nu fået givet Beaufort den rigtige værdi, og denne skal så udskrives.
Først konverteres den til en streng:
Str = ToString(Beaufort);
Str indeholder nu Beaufort som en streng og kan udskrive i den første linie med:
SetDlgItemText(hwndDlg, IDC_LAST, Str.c_str());
*Dvs lige før den første } efter linien med: case WM_TIMER:
| |
| Kommentar Fra : Boje1 |
Dato : 05-01-05 08:43 |
|
Hej bertel har kikket på det men når jeg compiler skriver den .
In function `LRESULT DialogProc(HWND__*, unsigned int, unsigned int, long int)':
137 ` Beaufort' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears
og så er linien hvor der står Beaufort = 12; markeret.
Her er en kopi af det jeg har ændret er det gjort rigtigt ?
case WM_TIMER:
if(NewData)
{
EnterCriticalSection(&CriticalSection);
double MyNew = New;
double MyAverage = Average;
NewData = FALSE;
LeaveCriticalSection(&CriticalSection);
std::string Str;
Str = ToString(MyAverage);
SetDlgItemText(hwndDlg, IDC_AVERAGE, Str.c_str());
Str = ToString(ConvertingFactor/MyAverage);
Str += "m/s";
SetDlgItemText(hwndDlg, IDC_CONVERTED, Str.c_str());
double VindSpeedInMS = ConvertingFactor/MyAverage;
int beaufort;
if(VindSpeedInMS < 32,7)
Beaufort = 12;
else if(VindSpeedInMS > 32.6)
Beaufort = 11;
if(VindSpeedInMS > 28,4)
Beaufort = 10;
else if(VindSpeedInMS > 24,4)
Beaufort = 9;
if(VindSpeedInMS > 20,7)
Beaufort = 8;
else if(VindSpeedInMS > 17,1)
Beaufort = 7;
if(VindSpeedInMS > 13,8)
Beaufort = 6;
else if(VindSpeedInMS > 10,7)
Beaufort = 5;
if(VindSpeedInMS > 7,9)
Beaufort = 4;
else if(VindSpeedInMS > 5,4)
Beaufort = 3;
if(VindSpeedInMS > 3,3)
Beaufort = 2;
else if(VindSpeedInMS > 1,5)
Beaufort = 1;
else if(VindSpeedInMS > 0,2)
Beaufort = 0;
Str = ToString(Beaufort);
SetDlgItemText(hwndDlg, IDC_LAST, Str.c_str());
}
Hilsen Bo
| |
|
beaufort er ikke det samme som Beaufort, C++ skelner mellem store og små bogstaver.
Så du skal lave int beaufort; om til int Beaufort;
Decimal tal (floating point) angives med . så det er 32.7 og ikke 32,7
Ellers ser det ok ud.
| |
| Kommentar Fra : Boje1 |
Dato : 05-01-05 21:20 |
|
Hej Bertel !
Er ikke helt med på.
Average : Er det gennemsnits af hvad.? Hvis det er gennmemsnit af vinden for de sidste 10 min som ønsket er der en fejl for den skriver i det feldt med det samme.
Average hvis det er gennemsit af de sidste 10 min er det så muligt at der kunne stå m/s som ved vind speed ?
Vind speed : Er det øjebliks vinden ?
Beaufort visning kan jeg ikke få over 2 er det fordi der er en fejl i average ? Som jeg for moder bruges til at omsætte Beaufort ?
Jeg har ikke fået lavet måler til taget "mangler materialer " men har lavet nogle test med kontakt.
Programmet nul stiller det sig selv hvis det ikke får input fra måler ? hvis ja hvor lang tid går der så.
Er det muligt at ændre på visninge i programmet så der kun er 1 tal efter . eks. 32.7
| |
|
Average er gennemsnit af de sidste 10 målinger (FilterLength)
New er den sidste måling.
Du skal justere på ConvertingFactor så den "måler" rigtigt.
Man kan godt lave det så den kun udskriver et tal efter . laver lige et eksempel senere.
Gennemsnit vil naturligvis gå imod 0 hvis der ikke kommer indput.
Jeg har endnu ikks haft tid til at kikke på en forbedret version, for meget andet om ørene, men håber at det vil ske i mogen aften. I den vil jeg lave en gennemsnit for de sidste 10 min.
| |
|
Jeg ville montere en magnet på hjulet og et magnet kontakt på "cyklen". Jeg mener at en magnet kontakt er det der hedder reed-relæ:
http://www.brinck.dk/relay.asp
| |
| Kommentar Fra : Yumatci |
Dato : 06-01-05 07:07 |
|
Hvad for nogle af dem her tror du man skal købe
REED relæer
Vare nr. REED relæer "DC" Pris
REED1 1 sluttekontakt DIL (271NO) 5/12 V 22,-
REED2 1 skiftekontakt DIL (271CO) 5/12 V 49,-
REEDS 1 sluttekontakt SIL (276NO) 12 V
Bare 2 af den nederste eller hvad??? For der kommer jo også ca 12 volt ud af serial porten gør der ikke??? og den nederste er så vidt jeg kan se til 12 volt!
| |
| Kommentar Fra : Boje1 |
Dato : 06-01-05 07:23 |
|
Hej Yumatci !
Kender du ikke nogen der har en gammel cykel comp liggende ?
For så har du et relæ med magnet lige til at prøve med.
Hilsen Bo
| |
| Kommentar Fra : Boje1 |
Dato : 06-01-05 07:58 |
|
Hej Bertel !
Det er helt ok at du ikke har tid, som sagt før skal du jo først passe din egne ting og så kommer det andet bag efter.
Jeg kan muligvis låne en måler ved en ven der har en båd men er ikke helt sikker på om den kan bruges.
Når du nu kikker på en forbedret version er det så muligt at ændre ConvertingFactor til omkreds så man kan angive omkreds på måler da den så automatisk vil vise rigtigt.
Er ikke klar over hvordan du vil laver 10 min. vind men kunne godt tænke mig at der minimum bliver taget 4 målinger pr min. så der til sidst er 40 målinger og så gennemsnit af dem.
1 Tillæg kan man overføre 10 min vind til regneark så man evt. kan følge vinde over en længere periode ?
2 Tillæg er det muligt at få udskrevet den højeste af de 40 målinger så man kan se hvor store vindstød der har været inden for de 10 min. og kan den også overføres til et regneark ?
De sidst to er kun hvis du har tid og lyst til at lave det ?
Hilsen Bo
| |
| Kommentar Fra : Boje1 |
Dato : 06-01-05 19:11 |
|
Hej Yumatci !
Programmet som Bertel laver er skrevet til comp men det er ikke til cykel comp, så det eneste du skal bruge er det lille relæ og magneten der sidder i hjulet eller en anden magnet .
Relæet forbinder du så til comp i stuen og så har du en vindmåler hvis du placerer måleren udenfor.
Ok ?
Hilsen Bo
| |
|
Jeg har endeligt fået lavet en forbedret version:
http://home20.inet.tele.dk/midgaard/vind2.cpp
Man angiver hjulets radius med WheelRadius, funktionen Time2WindSpeed omregner fra omdregnings hastighed til vindhastighed.
Det beregner et gennemsnit for hver FilterLength sekunder (default er 6), LongFilteLength (default 100) af disse bliver kørt igennem et løbende gennesnits filter.
Alle de viste tal er vindhastigheder i m/s (undtagen Beaufort).
Der kan laves to log-filer (er enabled default), en der skriver for hver ny måling (denne bliver stor) og en der skriver det nye gennemsnit for hver FilterLength sekunder.
Jeg var nødt til at hæve minimum omdregnings tid til 40 ms, elles får jeg ind imellem nogle falske tider på 10 - 30 ms. De kommer sansynligvis pga. prel/jitter i kontakten. Jeg vil arbejde på at finden en bedre måde at undgå falske samples.
Programmet mangler en del debugging, mest check af om der beregnes rigtigt.
Jeg vil gerne have lavet en setup dialog-box hvor man kan ændre på nogle af programmets parametre, bl.a. WheelRadius.
| |
| Accepteret svar Fra : BertelBrander | Modtaget 400 point Dato : 12-01-05 01:01 |
|
Jeg har kikket lidt mere på en sikker detektion af om kontakten er sluttet, men har ikke kunnet opnå nogen afgørende forbedring.
Hvis man ser bort fra de tider der ligger under 40 ms ser det ud til at det virker rimeligt, men er det acceptabelt?
Jeg kikker på det andet en af de første dage.
| |
| Kommentar Fra : Boje1 |
Dato : 12-01-05 07:12 |
|
Hej Bertel !
Jeg må nok indrømme at jeg ikke har fået kikket på programmet da jeg har lidt meget om ørerne for tiden men jeg skal nok få kikket på den inden alt forlænge.
Hilsen Bo
| |
| Godkendelse af svar Fra : Boje1 |
Dato : 30-03-05 19:02 |
|
Hej Bertel!
Jeg har valgt at lukke spørgsmålet da jeg har så meget andet om ørerne at jeg ikke får tid til at se på det foreløbigt og jeg ikke vil lade dig vente længer på dine point.
Håber at jeg evt. kan fange dig en anden gang igen så jeg kan få det lavet færdigt.
Tak for hjælpen.
Hilsen Bo
Ps. håber at du er tilfreds med mængden af point
| |
|
Jeg siger tak for point, 400 er mere end rigeligt.
Du siger bare til når du vil have det lavet færdigt.
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|