Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

 

2) Το πρόβλημα με το OVERFLOW (και όχι rollover) της millis() θα το έχεις ΌΧΙ όταν θα πρέπει να μετρήσεις κάτι εσύ αλλά όταν το arduino σου είναι ανοιχτό για καιρό. Δηλαδή, εάν το arduino είναι on and running για διάστημα πάνω από 50 ημέρες τότε η millis() θα επιστρέψει μικρότερο αριθμό αντί για μεγαλύτερο, γιατί δεν μπορεί να επιστρέψει μεγαλύτερο. Δηλαδή, εάν Χ είναι το χρονικό σημείο που παρατηρείς την συμπεριφορά αυτή της millis(), A το αποτέλεσμα της millis() πριν το Χ και Β μετά, τότε έχεις A > B. Αυτό είναι κάτι που πρέπει να το φροντίσεις γιατί μπορεί να γίνει κανένα ατύχημα μιας και μιλάμε για αυλόπορτα.

 

 

Αν η συνθήκη στο if statement είναι όπως την έχει γράψει (να υπάρχει αφαίρεση) δεν θα έχει πρόβλημα ούτε όταν η millis() κάνει overflow. Δεν πα να περάσουν και 100 χρόνια.  

 

Την millis() μπορείς να την μηδενίσεις (για την ακρίβεια μηδενίζεις την μεταβλητή που η millis() διαβάζει και επιστρέφει) αλλά είναι πολύ επικίνδυνο και σίγουρα θα προκαλέσει πολλά άλλα προβλήματα καθώς απο αυτήν (όχι την millis() αλλά την μεταβλητή) εξαρτούνται πολλά άλλα...

  • Απαντ. 38
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Αν η συνθήκη στο if statement είναι όπως την έχει γράψει (να υπάρχει αφαίρεση) δεν θα έχει πρόβλημα ούτε όταν η millis() κάνει overflow. Δεν πα να περάσουν και 100 χρόνια.  

 

 

Τιμή Α, μία μονάδα πριν το overflow. Τιμή Β, μία μονάδα μετά το overflow. Αφαίρεση; Α - Β; Β - Α; Δεν θα υπάρχει πρόβλημα; 

Δημοσ.

Αυτό που θες να κάνεις είναι μια ΜΠΚ. Όπως σου είπε και ο groot και άλλοι πρέπει να ξεκινήσεις από ένα διάγραμμα καταστάσεων, να ελέγξεις αν μπορεί να γίνει ελαχιστοποίηση καταστάσεων και μετά να γράψεις τον κώδικα βάση της τελικής ΜΠΚ.

 

Αν είχες ακολουθήσει αυτό τον τρόπο (top-down design) θα ήταν υπόθεση μιας ώρας ο κώδικας. Ξεκινώντας όπως κάνεις κατευθείαν από το χαμηλό επίπεδο (κώδικας) απλά θα πηγαίνεις μπρος-πισω να διορθώνεις λάθη.

  • Like 1
Δημοσ.

Τιμή Α, μία μονάδα πριν το overflow. Τιμή Β, μία μονάδα μετά το overflow. Αφαίρεση; Α - Β; Β - Α; Δεν θα υπάρχει πρόβλημα; 

 

Οχι. Ψάξε το καλύτερα...

(Hint: Unsigned variables... Και για να μην ψάχνεις, http://playground.arduino.cc/Code/TimingRollover )

Δημοσ.

Λοιπόν...

πρέπει να σας πω ότι απο χθες το απόγευμα η πόρτα δουλεύει κανονικά, σε επόμενο post θα ανέβουν λεπτομέρειες και εικόνες, και περιγραφή για τον έλεγχο ρεύματος. (Έβαλα δυο αντιστάσεις παράλληλα, αυτές είχα διαθέσιμες, η πρώτη 0,15Ω, και άλλη μία 0,1Ω. Οπότε η πττώση τάσης έπεσε πολύ, και λειτούργησε με τιμή 75 στα 1024, Υπολογισμοί και τιμές αργότερα...).

 

Δοκιμή με απόλυτη επιτυχία....

  • Like 1
Δημοσ.

Οπότε η πττώση τάσης έπεσε πολύ, και λειτούργησε με τιμή 75 στα 1024, Υπολογισμοί και τιμές αργότερα...).

 

 

Συνήθως βάζουμε έναν τελεστικό για να ενισχύσουμε λίγο την τάση, ώστε να μπορεί να μετρηθεί αξιόπιστα απο τον ADC του Arduino. 

 

Μία άλλη ευκόλτερη επιλογή, είναι να αλλάξεις το reference του ADC. Με την εντολή analogReference(type). Δες εδώ https://www.arduino.cc/en/Reference/AnalogReference 

Ο μC ATMega32u4 (αν θυμάμαι καλά έχεις Arduino Micro) έχει εσωτερική γεννήτρια reference voltage 2.56V, οπότε μπορείς να χρησιμοποιήσεις τις επιλογές DEFAULT, INTERNAL, EXTERNAL.  

 

Αν θες EXTERNAL μπορείς να δώσεις μια μικρότερη τάση στο AREF pin και με βάσει αυτή να γίνετε η μέτρηση. Αν πχ δώσεις 3.3V εκεί, τότε το analogread θα επιστρέφει 1024 για τάση στο αναλογικό pin 3.3V 

Δημοσ.

Θα βοηθούσα, μιας και έχω κάνει αντίστοιχο project για 6 λιμάνια της Βόρειας Θάλασσας, (με laser, διπλές μπάρες και πύλες, κάμερες, weighbridges, groundloops) αλλά το λογικό διάγραμμα χρειάζεται για να καταλάβουμε τί θέλει ο TS και να τον βοηθήσουμε.

 

Ο κώδικας μόνο δεν βοηθά.

  • Like 1
Δημοσ.

Θα βοηθούσα, μιας και έχω κάνει αντίστοιχο project για 6 λιμάνια της Βόρειας Θάλασσας, (με laser, διπλές μπάρες και πύλες, κάμερες, weighbridges, groundloops) αλλά το λογικό διάγραμμα χρειάζεται για να καταλάβουμε τί θέλει ο TS και να τον βοηθήσουμε.

 

Ο κώδικας μόνο δεν βοηθά.

Δεν είμαι σίγουρος ότι αναφέρεσαι σ' εμένα, δεν καταλαβαίνω ποιός είναι ο TS, το δικό μου progect, έχει ολοκληρωθεί και λειτουργεί εδώ και 80 ώρες περίπου χωρίς κανένα πρόβλημα...

 

Ευχαριστώ όλα τα παιδιά για τις ιδέες και τη βοήθεια, θα αξιοποιηθούν σε επόμενα progect, εκρεμούν δημοσιεύσεις του σχεδίου και video απο την λειτουργία (χρειάζονται επεξεργασία).

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...