diff --git a/Rocket/app/SoundCard/sound_card_driver.py b/Rocket/app/SoundCard/sound_card_driver.py index 522ff96..45418a4 100644 --- a/Rocket/app/SoundCard/sound_card_driver.py +++ b/Rocket/app/SoundCard/sound_card_driver.py @@ -104,8 +104,13 @@ def record(card: u3.U3, record_for: int = 650): card.close() def temp_read(card: u3.U3): - V_t=2.44 - R_k=10000 + V_t=2.44 ## Αυτή είναι η τιμή τής (συνολικής) τάσης στο κύκλωμα τού voltage divider (Vcc (power supply)). (Εδώ είναι mock, στο πλαίσιο τού αρχικού κώδικα.) + ## Όπως αναφέρω και παρακάτω, το LabJack-LV έχει (για τη δική μας χρήση) ένα range (για ανάγνωση) 0-2,44V. Θα χρειαστεί, είτε άμεσα, είτε με κάποιον + ## (επιπλέον) divider, να δώσουμε στο κύκλωμα τού thermistor κατάλληλη τάση (Vcc) (όπως την αναφέρω και παρακάτω, 2,44V (ή πολύ κοντά, από κάτω)). + ## Εικάζω ότι θα λειτουργήσει αποδοτικά (ειδικά, εδώ, από πλευράς range και ανάλυσης(-ευαισθησίας)). Ό,τι χρειάζεται, γενικά, το αναδιαμορφώνουμε. + R_k=10000 ## Η τιμή τής γνωστής αντίστασης στον (διπλό) voltage divider μας. (Εδώ είναι mock, στο πλαίσιο τού αρχικού κώδικα.) Γενικά, νομίζω, είναι καλό η τιμή + ## είναι καλό να είναι συγκρίσιμη με αυτή (τη μέση;) με αυτή τού thermistor (πληροφοριακά, εδώ λαμβάνω υπόψη το ένα από τα δύο (και το τρίτο στη + ## λίστα) thermistors που έχει στα datasheets του το Electrical, το οποίο, όπως αναφέρω και παρακάτω, ανεβάζω στο archive). T_0=298.15 ## Τόσο είναι σε Kelvin η θερμοκρασία δωματίου, 25oC. Θερμοκρασίες Kelvin είναι αυτές που επεξεργάζεται η εξίσωση, παρακάτω. B=3575 ## Η συγκεκριμένη τιμή λέγεται beta value και είναι χαρακτηριστική για κάθε thermistor. Το μοντέλο, παρακάτω, είναι ένα κοινό μοντέλο υπολογισμού τής θερμοκρασίας (τού thermistor) από την τιμή τής αντίστασής ## του. Ας ξεκινήσουμε με αυτό και, αν χρειαστούμε βελτιώσεις, θα περάσουμε σε ένα, υπάρχει η πιθανότητα, πιο ακριβές μοντέλο (τότε, αν είναι, θα γράψω και ένα πρόγραμμα για το ανάλογο calibration, με το @@ -117,6 +122,11 @@ def temp_read(card: u3.U3): ## initialised το U3 που χρησιμοποιούμε (όπως και, απ' ό,τι καταλαβαίνω, γίνεται). Αν χρειαστεί, πάλι ανάλογα με τη χρήση από το Electrical, να αλλάξει το FIO pin, το αλλάζουμε στη συνέχεια. ## Τελευταία σημείωση: η LV έκδοση τού U3 που χρησιμοποιούμε έχει ένα voltage range 0-2,44V, οπότε θα πρέπει να έχουμε εξασφαλίσει ένα input σε αυτό το range (δε θα ήταν άσχημο, κιόλας, στα 2,44V ## ακριβώς (ή πολύ κοντά, από κάτω)). - R_measured=(V_in/V_t)*R_k ## Θα συνεχίσω τα τελευταία σχόλια, πιο μετά. - therm_temp=((T_0*B)/(B+T_0*math.ln(R_measured/R_0))-273.15) - return therm_temp + R_measured=(V_in/V_t)*R_k ## Αυτή είναι η εξίσωση, όπως υπολόγισα, για τον υπολογισμό τής αντίστασης τού thermistor από (διπλό) voltage divider. Αν υπάρχει + ## κάποιο λάθος, την αλλάζουμε. + therm_temp=((T_0*B)/(B+T_0*math.log(R_measured/R_0))-273.15) ## Η συγκεκριμένη είναι η "Εξίσωση Β" (με beta value) που είναι μία από τις οποίες που + ## χρησιμοποιείται για την προσέγγιση θερμοκρασίας για thermistor, σύμφωνα με τη βιβλιογραφία μου. + ## Είναι μια πρώτη (ίσως και αρκετή) καλή προσέγγιση που μπορούμε να χρησιμοποιήσουμε. Αν + ## χρειαστεί κάποια αλλαγή, θα το δούμε. Η συγκεκριμένη είναι χωρίς κάποια ανάγκη για calibration, + ## οπότε είναι έτοιμη προς χρήση. Το τεστ θα δείξει και αν μάς κάνει. + return therm_temp ## Αυτή είναι η τελική μετρούμενη θερμοκρασία (τού thermistor (!) (ίσως να 'ναι σημαντικό να αναφερθεί (για κάποιο time delay κ.λπ.))).