Revision History
always@ (under_construction) begin: if(!success){try++;} end
Robokit_v1.0 : O RoboKit ξεκίνησε ως ένα project ανεξάρτητο (από μαθήματα κτλ..) τον Μάρτη του 2004 λόγω του ότι ήθελα να ασχοληθώ με προγραμματισμό σε low level παράλληλα με τις διάφορες ηλεκρονικές κατασκευές που κατασκέυαζα. Είναι πολύ συναρπαστικό να προγραμματίζεις (έστω κι αν ξέρεις ότι υπάρχουν εξυπνότεροι μέθοδοι από το cmp-jne-goto) γνωρίζοντας ότι εκεί που απευθύνεσαι υπάρχουν μόνο volts. Και αυτά θα πρέπει να τα κάνεις bit ώστε να τα πάρει ο μC. Και να φτάσεις σε σημείο να διαχερίζεσαι ολόκληρα words από τα DA-AD converts των αισθητήρων σου. Και πόσo μάλλον να κάνεις πράξεις α.κ.υ. (αριθμητικής κινητής υποδιαστολής , επιστημονικός υπλογισμός για τους ceidάδες – ποιός το περίμενε…) όταν ο επεξεργαστής σου κάνει μόνο single point operations. Κι όλα αυτά έχοντας κατά νου ότι απευθύνεσαι μόνο σε pure volts…
Robokit_v1.1: Η πρώτη του φωτογραφία. Μόλις έχει προστεθεί το drive dc motor πάνω στο σασί του RoboKit. Ωστόσο η τάση είναι ακόμα κοινή και παρέχεται από 6 ματαρίες ΑΑ. Ο RoboKit με αυτό το κύκλωμα άρχισε να κάνει τα πρώτα του μεγάλα ‘δυνατά’ βήματα αφού τα dc μοτεράκια άρχισαν να παίρνουν μέσω ρελέ 9Volts. Το κύκλωμα με την H-bridge που είχε πριν του έδινε μόνο 5 και τα μοτεράκια δεν είχαν την ισχύ που έπερεπε.
Robokit_v1.2: Προστέθηκε η μπαταρία Ni-Cd 9.1 V στις εισόδους των ρελέ. Έτσι απομονώθηκαν οι δυο τάσεις. Μία για την κίνηση και μια για την λειτουργία του λογικού μέρους. Το “λογικό” μέρος (chip κτλ.) συνεχίζει να παίρνει τάση από την συστοιχία των 6 ΑΑ μπαταριών.
Robokit_v2.1: Επεκτάθηκε προς τα εμπρός το σύστημα με μια διάτρητη πλακέτα 10×4 cm . Στηρίχτηκε με βίδες πάνω στο πλαστικό του σασί.
Robokit_v2.2: Άλλαξε η μορφή των ερπηστριών σε σχήμα τετραγώνου. Η στήριξη του σχήματος έγινε με ντίζες και σύρμα.
Robokit_v2.3: Στην εμπρός πλακέτα προέκτασης προστέθηκαν οι πρώτοι αισθητήρες επαφής. Τους κατασκεύασα βάζοντας στυλό των οποίων το μελάνι είχε αντικατασταθεί από ένα σκληρό σύρμα. Όταν γινόταν επαφή με κάποιο εμπόδιο στο ένα μέρος του στυλό, πιεζόταν προς τα μέσα το σύρμα και έκανε επαφή με ένα κομμάτι μετάλλου στην άκρη του στυλό στην δίατρητη. Χρησιμοποιήθηκαν pull-up αντιστάσεις 2.2kΩ .
Robokit_v3.1: Προστέθηκε ο 2ος όροφος στο ρομπότ. Αποτελείται από ένα κομμάτι μετάλλου που απομόνωσα από ένα cd-rom drive. Στηρίχτηκε με τρία διαμήκη κομμάτιου μετάλλου (σαν ‘λεία’ ντίζα) – δύο στην μια άκρη και ένα στην άλλη. Οι επαφές αυτών με την διάτρητη έγιναν με θερμοκόλληση.
Robokit_v3.2: Προστέθηκαν διάτρητες πλακέτες προέκτασης πάνω στην μεταλλική βάση. Δεν τοποθετήθηκε μια ενιαία , έτσι ώστε να είναι εύκολη η πρόσβαση (και τροποποίηση) της ένωσης των καλλωδίων πάνω στην μητρική. Η στήριξη έγινε με πολύ μικρές βίδες.
Robokit_v3.3: Στον “νότιο πόλο” του 2ου ορόφου μεταφέρθηκε η σειριακή θύρα , ώστε πλεον ο προγραμματισμός να γίνεται από το πλαινό μερος του ρομπότ χωρίς να χρειάζεται να αλλάζω την θέση της μητρικής.
Robokit_v3.4: Στον “βόρειο πόλο” του 2ου ορόφου αναπτύχθηκε το σύστημα IR_Detect_v1 . Είναι ένα συστημα εντοπισμού εμποδίων που αποτελείται από 2 led εκπομπής υπερύθρων και 2 TSOP ανίχνευσης υπερύθρων. Μέσω προγραμματισμού γίνεται ο έλεγχος της συχνότητας λειτουργίας του συστήματος. Με δοκιμές την σταθεροποίησα στα 38.500Hz. Επίσης πρόσθεσα κατάλληλα και ποτενσιόμετρα ώστε να ρυθμίζω την απόσταση εντοπισμού στα 3-20 cm (με εμπειρική ακρίβεια).
Robokit_v4.1: Προστέθηκε ο 3ος όροφος αποτελούμενος από 1 διάτρητη πλακέτα 16×10 cm. Στηρίχθηκε πάνω στην πλακέτα του DC_motor_driver και πάνω στην μεταλλική πλάκα του δεύτερου ορόφου με ντίζες και παξιμάδια. Με αυτόν τον τρόπο η απόσταση των 2 ορόφων μπορεί να αυξομειώνεται. Επίσης δίνεται η δυνατότητα προσήκης και άλλων πλακετών. Τοποθετήθηκε ανάποδα , δηλαδή με το “μέρος ου χαλκού” πάνω ώστε να είναι εύοκλη η προσθήκη components χωρίς την αποσυναρμολόγησή της.
Robokit_v4.2: Προστέθηκε στον 3ο όροφο ένα 3-state button που έλεγχε την τάση στα dc motor. Συγκεκριμένα μέσω πτώσης τάσης με διόδους έστελνα στα μοτεράκια ~6 , ~7,6 και 9,1 volts αντίστοιχα.
Robokit_v4.3: Προστέθηκε στον 3ο όροφο το σύστημα RF_Control_v1 . Αποτελείται από έναν δέκτη ραδιοσυχνότητας 27Μhz σε ολοκληρωμένο με τέσσερα κανάλια διαχωρισμού κατά ΑΜ. Επειδή το παραπάνω λειτουργεί στα 3,3 volts γίνεται ανόρθωση τάσης στα 5v μέσω του 74LS14N ttl inverter. Επίσης χρησιμοιήθηκαν pull-down αντιστάσεις για να μην διοχετεύω όλο το ρεύμα από το rf σύστημα στον μικροελεγκτή.
Robokit_v4.4: Προστέθηκαν αισθητήρες φωτός. Μέσω φωτοαντιστάσεων και πυκνωτών έφτιαξα ένα κύκλωμα RC ταλάντωσης. Αυτό συγχρονίζεται από τον bs2 και με κατάλληλο προγραμματισμό μετράω τον χρόνο πτώσης τάσης στα άκρα των προ-φορτισμένων πυκνωτών και αποφασίζω για την πορεία του robot. Μικρότερος χρόνος σημαίνει μεγαλύτερη τιμή αντίστασης – άρα λιγότερο φως.
(Κάποτε εδώ είχα γράψει…) : Η παραπάνω διαδικασία αφορά την γενική αναβάθμιση του RoboKit τόσο σε επίπεδο λογισμικού όσο και υλικού , μετά το τέλος της οποίας θα έχω την έκδοση V_5.0 . Αυτή θα περιλαμβάνει εκτός από το παραπάνω γενικό σχέδιο προγραμματισμού , διαφορετικό τρόπο διάταξης των ερπηστριών (δίοτι τώρα δεν βοηθάει η κάθετη διαμόρφωση και είναι ψηλά το βαρύκεντρο) , ενίσχυση του σασί με ντίζες και γωνίες αλιουμινίου , προσθήκη ενός servomoter για την ανάπτυξη συστήματος sonar (βλ. TODO) , βελτίωση αισθητήρων επαφής και αλλαγή της τροφοδοσίας του λογικού μέρους του κυκλώματος (pic και λοιπά ολοκληρωμένα) με μπαταρία Ni-Cd 9,1V (διότι η τωρινή 6,5V αποφορτίζεται πολύ γρήγορα.)
Robokit_v5.1: Ο RoboKit απέκτησε προσωπικότητα.ΟΚ , δεν ξέρω για τεχνητή νουμοσύνη αλλά σίγουρα απέκτησε κεφάλι. Σε αυτό αργότερα θα ενσωματωθεί το σύστημα σόναρ . Τώρα είναι ‘κούφιο’. Με αρκετά μεταλικά λαμάκια και ντίζες στερέωσα στο κέντρο του robot ένα σερβομοτεράκι της Futaba (6v). Αυτο επιτρέπει την ακριβή κίνηση του κεφαλιού (το πήρα απο παιχνίδι από jumbo) σε οριζόντιο άξονα 180 μοιρών.
Robokit_v5.2: Άλλαξα τους αισθητήρες επαφής καθώς οι παλιοί δεν είχαν καλή απόκριση (έπρεπε η γωνιά επαφής να είναι συγκεκριμένη ). Οι καινούριοι αποτελούνται από ελατήρια τα οποία κάμπτωνται όταν γίνει κάποια επαφή και ‘γειώνουν’ μια αντίσταση. Η γωνία πρόσκρουσης είναι μεγάλη και η λειτουργία εγγυημένη.
Robokit_v5.3: Άλλαξα την μπαταρία Ni-Cd 6.7 με μια Ni-Cd 9.1 για την τροφοδοσία του ‘λογικού μέρους’ καθώς η πρώτη παρόλο που έδινε ιδανική τάση δεν είχε μεγάλη χωρητικότητα σε mA και αποφορτιζόταν εύκολα. Η πρόσθεσή της έγινε στο κάτω μέρος του robot μπροστά από την μπαταρία των dc motor.
Robokit_v5.4:Προστέθηκαν dip switches στα pin του επεξεργαστή και στους φωτοαισθητήρες και τα pin του RF_Control ώστε να μπορούν να απομωνοθούν ηλεκτρικά σε περίπτωση διαφορετικής σύνδεσης των pin του bs2.
O RoboKit στην 5η έκδοσή του φαίνεται παρακάτω :
Robokit_v5.4.1 Alpha: Ο RoboKit δέχεται πειραματικές επεμβάσεις, που μέχρι τώρα είχαν μείνει στο χαρτί. Σκοπός είναι η αύξηση των Ι/Ο pins του επεξεργαστή καθώς οι μόλις 15 αποδεικνύονται εύλογα λίγες. Η υποβληθής διαδικασία είναι η παρακάτω :
Σύμφωνα με το ακόλουθω διάγραμμα είναι φανερό ότι προσπαθώ να αυξήσω τα Ι/Ο pins φτιάχνοντας κάποιο τρόπο σειριακού interface με σήματα data_ , clock_ , clear_ , enable_ . Με κατάλληλο προγραμματισμό τα 3 πρώτα φορτώνουν τα data σειριακά σε έναν καταχωρητή 74HC164 , και όταν γίνει αυτό όλα τα data παράλληλα ‘κλειδώνονται’ σε ένα flip-flop 74HC374. (byInanes @ greekbotics). Βέβαια είναι λιγότερο από προφανές ότι με αυτόν τον τρόπο οι 8 εξόδοι που παίρνω (δηλαδή κέρδισα 4) δεν μπορούν να χρησιμοποιηθούν ως analog , ενώ είναι μόνο outputs. Ωστόσο είναι ιδανική λύση για κυκλώματα που θέλω κάποια σταθερή έξοδο (π.χ. κίνηση των dc motor μέσω της H_bridge , ενδεικτικά leds λειτουργίας κτλ..) . Επίσης το πιο σημαντικό πλεονέκτημα της παραπάνω σχεδίασης είναι οτί μπορώ να πάρω 8 επιπλέον εξόδους για κάθε σήμα enable σε ένα δεύτερο flip-flop ic. Στην δοκιμαστική πλακέτα όλα λειτούργησαν “σχετικά” κατά το δοκούν.
Το πρωτόκολλο επικοινωνίας που ανέπτυξα είναι το S2oBO_v1.0 (Serial 2 (to) only Buffered Output) και είναι πολύ απλό στην πρώτη του έκδοση καθώς η λειτουργία του βασίζεται μόνο στα παραπάνω σήματα. Περισσότερα (ελπίζω) σύντομα στο section Software . Ωστόσο η βελτίωση του πρωτοκόλου μέσω πρόσθεσης επιπλέον εσωτερικών σημάτων και buffers κρίνεται απαραίτητη καθώς τώρα γίνεται αλλαγή όλων των bit/pin εξόδου έστω εαν εγώ θέλω να αλλάξω μόνο 1-2. Εν ολίγοις χρειάζεται softwar-ική δουλεία…. Γιατί κάτι μου λέει ότι θα αργήσουμε να δούμε την v2.0 ??
:)
Robokit_v5.4.2 Alpha: Γίνεται προσπάθεια σύνδεσης ενός εξωτερικού ενισχυτή ήχου 10watt. Έτσι με αυτόν θα μπορεί ο RoboKit να “μιλάει”. Προφανώς δεν θα αναπαράγει συχνότητες σε όλο το ακουστικό φάσμα συχνοτήτων (αυτό θα απαιτούσε εξωτερικό κύκλωμα παραγωγής υψηλών συχνοτήτων , μετασχηματισμό Fourier της φωνής και κάποιο μεγάλο lookup table στην EEPROM για αντιστοιχία συντελεστών-συχνοτήτων). Ωστόσο στα χαμηλά (<4KΗz) με ένα lookup table των ~30 θέσεων μπορώ άνετα να αποθηκεύσω τον κώδικα Morse. Βέβαια θα μου πείτε και ποιός θα τον καταλαβαίνει… Αλλά αυτό είναι άλλη ιστορία. Τουλάχιστον άρχισε η πρώτη μορφή επικοινωνίας. Μέχρι την stable έκδοση θα έχει ενσωματωθεί στο σύστημα. Μόνο που πρέπει να βρώ χώρο να το χωρέσω…
Robokit_v6 : Μετά από πολύ καιρό ριζικής ανάπτυξης στο σύστημα έφτασα στην έκδοση v_6. Δεν ξέρω ποιά συγκεκριμένη υποέκδοση να βάλω αφού το σύστημα δεχόταν καθημερινές επεμβάσεις. Απλά θα αναφέρω τις βασικές αλλαγές.
- Αντικαταστάθηκαν οι 2 μπαταρίες Ni-Cd με μια Ni-Mh 1200mAh~12V.
- Για να αποφύγω αυξομειώσεις στις κοινές πλέον τάσεις (κύκλωμα-κίνηση) χρησιμοποίησα μετασχηματιστή 12V->6V με ικανότητα οδήγησης 1,2A για σταθερή είσοδο 1,2Α .
- Αντικατάστάθηκε το κύκλωμα κίνησης με τα dc-motor και την H-brigde με servomoter 6V-3Kg ροπή , για πιο ακριβή κίνηση (αλλά και πιο αργή-αδύναμη). Επίσης κέρδισα 2 pins.
- Ο παραπάνω ενισχυτής ήχου έχει ενσωματωθεί κανονικά και δουλεύει !!!
- Έφτιαξα σύστημα sonar που ανιχνεύει πηγή φωτός και εμπόδια σε real-time. Δηλαδή κάθώς το σύστημα δουλεύει , σκανάρονται εμπόδια και φως και αποφασίζει για την κίνησή του. Σύντομα θα υπάρχει αναλυτικός οδηγός στο section Project με αναλυτική παρουσίαση.
- Οι εμπρός αισθητήρες επαφής αντικαταστάθηκαν από σύστημα υπερήχων. Μπορεί να δουλέψει και ως σύστημα ελέγχου κίνησης σε ένα χώρο (άρα να αναπτυχθεί κατάλληλο πρόγραμμα για ασφάλεια). Το interface αυτού έγινε με optocoupler και η κατανάλωση είναι μόλις 5μΑ !
και μερικές φωτογραφίες….
και ακόμα περισσότερες φωτογραφίες…..
































