Enklare tidtagning för en grej, tips?
Postat: 13 mars 2019, 00:51:40
Har en turbopump som använder sig av 3 hallsensorer för styrning av motorn men en av dessa sensorer har lämnat in så pumpen går bara upp till 65%. Det går inte att komma åt kortet som dessa sensorer sitter på för att byta ut den felaktiga utan att behöva plocka isär hela pumpen men då måste en balansering av hela pumpen till som kostar runt en 5000:- vilket inte är speciellt lockande. Billigare då med tex en ATTiny10 eller dylik som är liten och som kan fixa den saknade pulsen baserat på tiden det tar mellan de andra sensorerna var planen.
Jag har med lite besvär åtkomst till kablarna till sensorerna och tycker att det utan problem borde gå att fixa till den saknade signalen mha de andra två eller tom bara en av sensorerna.
Mina högst underutvecklade programtankar går då så här:
Dock måste nog digitalRead(1, HIGH) förekomma före LOW annars flippar nog turbokontrollern ut. Ett annat alternativ till principkod skulle då ev kanske kunna vara nedan högst liknande:
På ovan vis kan det då bara detekteras på rätt sätt, tror jag, samt få exakt tid mellan varje sensor detektering då jag inte vet om tiden mellan av och på för en sensor är den samma som mellan 2 sensorer.
Allt detta är nu säkert skitenkel kod men jag får bara inte ihop det sista. Vet iof inte heller om resten av kodprincipen hade funkat som tänkt, inte rakt av förstås men i det grova stora.
Tips, idéer?
Jag har med lite besvär åtkomst till kablarna till sensorerna och tycker att det utan problem borde gå att fixa till den saknade signalen mha de andra två eller tom bara en av sensorerna.
Mina högst underutvecklade programtankar går då så här:
Så tänkt principiell kod:När sensor 1 går hög kolla vad millis står på.
Samma mikrosekund sensor 1 blir låg kolla vad millis står på nu.
Alternativt: samma mikrosekund som sensor två går hög kolla vad millis står på nu.
Beräkna tiden mellan dessa två värden och håll utgång X hög denna mängd av tid.
När sensor 1 går hög igen (alternativt efter att tiden gått ut, vet ej om de är samma) går utgång X låg och allt upprepas.
Kod: Markera allt
if digitalRead(1, HIGH) { (om sista sensorn före den som havererat går hög)
tid_start = millis (registrera vad tiden är nu)
}
if digitalRead(1, LOW) { (när sensorn går låg)
tid_slutet = millis (kolla vad tiden är nu)
Beräkna hur lång tid det gick mellan tid_start och tid_slut och
håll utgång X hög den tiden som det tog. (får dock bara inte ihop denna mening kodmässigt)
Utgång X = LOW (kanske inte behövs men för säkerhets skull kanske)
}
Kod: Markera allt
if digitalRead(1, HIGH) { (om första sensorn går hög)
tid_start = millis (registrera vad tiden är nu)
}
if digitalRead(2, HIGH) { (när andra sensorn går hög oavsett om den andra gått låg eller ej)
tid_slutet = millis (kolla vad tiden är nu)
Beräkna hur lång tid det gick mellan tid_start och tid_slut och
håll utgång X hög den tiden som det tog. (får dock bara inte ihop denna mening kodmässigt)
Utgång X = LOW (kanske inte behövs men för säkerhets skull)
}
Allt detta är nu säkert skitenkel kod men jag får bara inte ihop det sista. Vet iof inte heller om resten av kodprincipen hade funkat som tänkt, inte rakt av förstås men i det grova stora.
Tips, idéer?