γωνιόμετρο (2) Φωτορυθμικά

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ2.8 Γωνιόμετρο (2) Φωτορυθμικά

Περιγραφή: Περιστρέφοντας δεξιόστροφα το ποτενσιόμετρο, ελέγχουμε το άναμμα 5 LED διαφορετικών χρωμάτων σε συνδυασμούς (πράσινο-μπλε/κίτρινο-κόκκινο/λευκό). Κατά την αντίστροφη περιστροφή του ποτενσιόμετρου, τα LED ανάβουν αντίστροφα.

γωνιόμετρο (2)

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ1.25 Γωνιόμετρο (2)

Περιγραφή: Περιστρέφοντας δεξιόστροφα το ποτενσιόμετρο, ελέγχουμε το άναμμα 4 LED διαφορετικών χρωμάτων (πράσινο/κίτρινο/μπλε/κόκκινο). Κατά την αντίστροφη περιστροφή του ποτενσιόμετρου, τα LED ανάβουν αντίστροφα (κόκκινο/μπλε/κίτρινο/πράσινο).

γωνιόμετρο

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ1.24 Γωνιόμετρο

Περιγραφή: Περιστρέφοντας δεξιόστροφα το ποτενσιόμετρο, ελέγχουμε το άναμμα 4 LED διαφορετικών χρωμάτων (πράσινο/κίτρινο/μπλε/κόκκινο)

φανάρι κυκλοφορίας

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ1.21 Φανάρι κυκλοφορίας

Περιγραφή: Όταν ο αισθητήρας είναι OFF, το πράσινο LED είναι αναμμένο. Όταν ο αισθητήρας είναι ON, το κίτρινο LED αναβοσβήνει 5 φορές για 0,5 δευτερόλεπτο και στη συνέχεια το κόκκινο LED μένει αναμμένο για 2,5 δευτερόλεπτα.

(Στην δραστηριότητα του οδηγού προτείνεται ο αισθητήρας αφής, που όμως δεν υπάρχει στο πακέτο και εδώ έχει αντικατασταθεί από τον αισθητήρα κλίσης)

έλεγχος στάθμης νερού

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ1.18 Έλεγχος στάθμης νερού (2)

Περιγραφή: Όταν η στάθμη του νερού ανεβαίνει, το κίτρινο LED ανάβει προειδοποιώντας, ενώ όταν η στάθμη ξεπεράσει το κρίσιμο όριο, το κόκκινο LED ανάβει, και ο μηχανισμός υπερχείλισης (σερβοκινητήρας) ενεργοποιείται.

υπολογισμός απόστασης

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ1.15 Υπολογισμός απόστασης

Περιγραφή: Τα LED 3 χρωμάτων (κόκκινο/μπλε/πράσινο) δίνουν ένδειξη για την απόσταση στην οποία βρίσκεται ένα αντικείμενο/εμπόδιο.

προγραμματισμός λάμπας αφής

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ1.4 Προγραμματισμός Λάμπας Αφής.

Περιγραφή: Όταν ο αισθητήρας πατιέται με μικρή δύναμη, η λυχνία LED ανάβει και παραμένει αναμμένη. Όταν ο αισθητήρας πατιέται με μεγάλη δύναμη, η λυχνία LED σβήνει και παραμένει σβησμένη.

Aside

συναγερμός κλίσης

Physical Computing στο σχολείο με τον εξοπλισμό Polytech S2.1

Τίτλος: Δραστηριότητα ΑΓ1.1 Συναγερμός κλίσης.

Περιγραφή: Όταν ο αισθητήρας γέρνει από την αρχική οριζόντια θέση, ένας ήχος παράγεται και η λυχνία LED ανάβει για 1s.

Έλεγχος dc κινητήρα, με δύο κουμπιά και ποτενσιόμετρο

Περιγραφή

Ένας κινητήρας συνεχούς ρεύματος συνδέεται σε γέφυρα Η και ελέγχεται με δύο κουμπιά (στιγμιαίους διακόπτες Α και Β) και ένα ποτενσιόμετρο. Το κουμπί Α λειτουργεί ως διακόπτης On/Off: ένας ακίνητος κινητήρας αρχίσει να περιστρέφεται όταν πατηθεί το κουμπί Α. Με το ποτενσιόμετρο η ταχύτητα του κινητήρα αυξάνεται ή μειώνεται. Πατώντας το κουμπί Α άλλη μια φορά, ο κινητήρας σταματά. Με το κουμπί Β ελέγχεται η κατεύθυνση, ώστε ο κινητήρας να περιστρέφεται και με τις δύο φορές.

Εξαρτήματα και συνδέσεις

  • 1 Arduino Uno R3, breadboard, καλώδια, τροφοδοσία κινητήρα
  • 1 κινητήρας συνεχούς ρεύματος (dc motor)
  • 1 γέφυρα Η (Η Bridge)
  • 1 Ποτενσιόμετρο 10 kΩ
  • 2 στιγμιαίους διακόπτες (push buttons)
  • 2 αντιστάτες 10 ΚΩ

Η ακίδα 1 της γέφυρας H συνδέεται στην ψηφιακή ακίδα 9 στο Arduino. Από εδώ ενεργοποιείται η γέφυρα H: όταν δέχεται 5V ο κινητήρας ξεκινά, όταν δέχεται 0V ο κινητήρας σταματά. Η σύνδεση στην PWM 9 εξασφαλίζει τον έλεγχο της ταχύτητας του κινητήρα μέσω του ποτενσιόμετρου, αφού μπορούμε να έχουμε και 254 ενδιάμεσες τιμές τάσης, επιπλέον των 0 και 5V.

H ακίδα 2 της γέφυρας H συνδέεται στην ψηφιακή ακίδα 3 στο Arduino και η ακίδα 7 της γέφυρας στην ψηφιακή ακίδα 2. Αυτές είναι οι ακίδες που θα χρησιμοποιηθούν στη γέφυρα H για τον καθορισμό της κατεύθυνσης περιστροφής. Εάν η ακίδα 3 είναι LOW και η ακίδα 2 HIGH, ο κινητήρας θα περιστραφεί προς μία κατεύθυνση. Εάν η ακίδα 2 είναι LOW και η ακίδα 3 HIGH, ο κινητήρας θα περιστραφεί προς την αντίθετη κατεύθυνση. Εάν και οι δύο ακίδες είναι HIGH ή LOW ταυτόχρονα, ο κινητήρας θα σταματήσει να περιστρέφεται.

Η ακίδα 16 της γέφυρας H συνδέεται με τα 5V που έρχονται από το Arduino.

Οι ακίδες 4 και 5 είναι και οι δύο οι γειώσεις.

Στις ακίδες 3 και 6 της γέφυρα H συνδέεται ο κινητήρας. Αυτές οι δύο ακίδες θα ενεργοποιούνται και θα απενεργοποιούνται ανάλογα με τα σήματα που έρχονται στις ακίδες 2 και 7.

Στην ακίδα 8 της γέφυρας συνδέεται η εξωτερική τροφοδοσία από την πηγή, απαραίτητη σε κάθε έργο που περιλαμβάνει κινητήρες.

Κώδικας

const int controlPin1 = 2; //συνδέεται στην ακίδα 7 της γέφυρας 
const int controlPin2 = 3; //συνδέεται στην ακίδα 2 της γέφυρας 
/* οι ψηφιακές 2 και 3 σε συνδυασμό LOW/HIGH καθορίζουν τη φορά περιστροφής ενώ αν είναι 
και οι δύο LOW ή HIGH, ο κινητήρας σταματά */ 
const int enablePin = 9; //συνδέεται στην ακίδα 1 της γέφυρας και την ενεργοποιεί
const int directionSwitchPin = 4; //κουμπί Β, ελέγχει τη φορά περιστροφής του κινητήρα
const int onOffSwitchStateSwitchPin = 5; //κουμπί Α, ελέγχει την έναρξη/λήξη της κίνησης του κινητήρα
const int potPin = A0; //το ποτενσιόμετρο ελέγχει την επιτάχυνση/επιβράδυνση
int onOffSwitchState = 0; //ανίχνευση τρέχουσας κατάστασης του κουμπιού Α 
int previousOnOffSwitchState = 0; //καταγράφει την προηγούμενη κατάσταση του κουμπιού Α
int directionSwitchState = 0; //ανίχνευση τρέχουσας κατάστασης του κουμπιού Β
int previousDirectionSwitchState = 0; //καταγράφει την προηγούμενη κατάσταση του κουμπιού Β

int motorEnabled = 0; // ελέγχεται αν ο κινητήρας περιστρέφεται ή όχι
int motorSpeed = 0; // ταχύτητα
int motorDirection = 1; // παρακολουθεί σε ποια κατεύθυνση περιστρέφεται ο κινητήρας
void setup() {
  pinMode(directionSwitchPin,INPUT);
  pinMode(onOffSwitchStateSwitchPin,INPUT);
  pinMode(controlPin1,OUTPUT);
  pinMode(controlPin2,OUTPUT);
  pinMode(enablePin,OUTPUT);
  digitalWrite(enablePin,LOW);// ο κινητήρας αρχικοποιείται στο OFF
}
void loop() {
  onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin); //διάβασε την κατάσταση του κουμπιού Α 
  delay(1);
  directionSwitchState = digitalRead(directionSwitchPin); //διάβασε την κατάσταση του κουμπιού Β 
  motorSpeed = analogRead(potPin)/4; //μετατροπή των 1024 τιμών του Α0 σε 256 του PWM

  if(onOffSwitchState != previousOnOffSwitchState){    
    if(onOffSwitchState ==HIGH){
      motorEnabled = !motorEnabled; //ο τελεστής ! χρησιμοποιείται όταν έχουμε δύο μόνο δυνατές καταστάσεις 0 και 1
     /*κουμπί Α: αν διαφέρει η τρέχουσα κατάσταση από την προηγούμενη τιμή και ο διακόπτης είναι πατημένος HIGH, 
     τότε κάνε τη μεταβλητή της ισχύος του κινητήρα 1 (ο κινητήρας να κινηθεί) 
     αλλιώς, κάνε τη μεταβλητή 0. */
    }
  }
  if (directionSwitchState != previousDirectionSwitchState) { 
    if (directionSwitchState == HIGH) {
      motorDirection = !motorDirection;
     /*κουμπί Β: αν διαφέρει η τρέχουση κατάσταση από την προηγούμενη τιμή και ο διακόπτης είναι HIGH, 
     τότε κάνε τη μεταβλητή της φοράς κίνησης ισχύς του κινητήρα 1 (άλλαξε κατεύθυνση)
     αλλιώς, κάνε τη μεταβλητή 0.    */   
    }
  }
  if(motorDirection == 1){ 
    digitalWrite(controlPin1, HIGH);
    digitalWrite(controlPin2, LOW);
   /*αλλάζει η κατεύθυνση με αυτόν τον συνδυασμό*/    
  }
  else { 
    digitalWrite(controlPin1, LOW);
    digitalWrite(controlPin2, HIGH);
  }

  if(motorEnabled == 1) { 
    analogWrite(enablePin, motorSpeed);
  }
  else {
    analogWrite(enablePin, 0); 
  }
  
  previousDirectionSwitchState = directionSwitchState; 
  previousOnOffSwitchState = onOffSwitchState; //αποθήκευση της τρέχουσας κατάστασης των διακοπτών, ως "προηγούμενη κατάσταση" για την επόμενη εκτέλεση του προγράμματος.
}

στο Τinkercad

http://www.tinkercad.com/things/25qYBJGNOUh