💾 Archived View for magaz.hellug.gr › 01 › 04_coffee-howto › index.gmi captured on 2024-08-18 at 17:38:17. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-02-05)

-=-=-=-=-=-=-

Πώς φτιάχνεται ένας γκαϊφές

Γεωργάτος Φώτης gef@ceid.upatras.gr(mailto:gef@ceid.upatras.gr?subject=COFFEE-HOWTO)
Ιαν 1998

Μία από τις πιο ενοχλητικές ερωτήσεις που έχω ακούσει για λογισμικό είναι εάν φτιάχνει καφέ. Ε, ναι λοιπόν, φτιάχνει. Και καλό καφέ.

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

Το κυριότερο πρόβλημα είναι να συνδέσουμε την καφετιέρα με τον υπολογιστή και να την ελέγχουμε μέσω λογισμικού. Αυτό συνήθως ανάγεται σε ένα κύκλωμα διακόπτη ON/OFF, που ελέγχει την τροφοδοσία της καφετιέρας.

1. Είδη καφέ

2. Κυκλώματα σύνδεσης της καφετιέρας

3. Λογισμικό

4. Συμπτώματα υπερδοσολογίας

5. Επεκτάσεις

6. Αναφορές

[1. Είδη καφέ]

[1.1 Ελληνικός]

Είναι επίσης γνωστός και ως τούρκικος, αλλά είναι παραλλαγή του. Παλιά είχαν για σηματάκι τον παπαγάλο, αλλά τώρα χρησιμοποιούν τον πιγκουίνο. Χαρακτηριστικό του καφέ αυτού είναι το κατακάθι στον πάτο του ποτηριού, που μπορεί να χρησιμεύσει για να μαντέψετε την ατυχία σας.

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

Οι κατηγορίες του ελληνικού καφέ είναι: (κουταλιές)

Ανακατεύουμε συνεχώς μέχρι το μίγμα να αρχίσει να ξεχειλίζει, οπότε με γρήγορες κινήσεις το παίρνουμε από τη φωτιά. Αργείς-χάνεις, απλή λογική. Το βήμα αυτό συζητείται να υλοποιηθεί με robot.

[1.2 Γαλλικός]

Δημοφιλής καφές για προγραμματιστές μιας και δεν χρειάζεται προσοχή. Η ανάρπαστη γεύση του έχει εμπνεύσει χιλιάδες προγραμματιστών σε έργα λογισμικού αμύθητης τελειότητας, υλοποιημένα άγρια χαράματα. Τα Windows για παράδειγμα είναι γραμμένα 5:00 το πρωί, με τα νεύρα ΝΑ. Εγγυημένο αποτέλεσμα.

[1.3 Nescaffe]

Το κουνάς πριν

[1.4 frappe]

Το κουνάς μετά

[1.5 freddo]

Δύσκολος καφές.

Μην τον ζητήσετε από τον τύπο στο Πάρκο της Ειρήνης/Πανεπιστήμιο Πάτρας

[1.6 cappuccino]

[1.7 espresso]

[2. Κυκλώματα σύνδεσης της καφετιέρας]

Το σχηματικό είναι κάπως έτσι:

ΣΗΜΕΙΩΣΗ: 'Εχει παρατηρηθεί ότι μερικά σχήματα δεν φαίνονται σωστά. Σε τέτοια περίπτωση, δείτε τα με "View->Document source".

--------- 0-5V  --------- ~220V  -----------
|  Η/Υ  |===>===|Ελεγχος|========|Καφετιέρα|
---------       ---------        -----------

Η γενική ιδέα είναι ότι παίρνουμε μία τάση ελέγχου από τον υπολογιστή, ο οποία οδηγεί ένα κύκλωμα με απομόνωση (OPTOTRIAC ή RELAY).

Εάν η καφετιέρα είναι μεγάλη (πχ περισσότερο από 200W), χρησιμοποιείστε οπωσδήποτε RELAY, αλλιώς μπορείτε να βάλετε TRIAC. Εάν δεν κάνετε ακριβώς αυτό, απλά θα πετάξετε τα λεφτά σας με τον ή με τον άλλο τρόπο.

Σημειώστε ότι τα κυκλώματα που έχουμε παρακάτω, είναι όλα τουλάχιστον μια φορά δοκιμασμένα, αλλά η διασύνδεση με τον υπολογιστή γίνεται με ΔΙΚΗ ΣΑΣ ΕΥΘΥΝΗ. Εάν δεν έχετε εμπειρία με ηλεκτρονικά, καλόν θα είναι να μην την αποκτήσετε με αυτά τα κυκλώματα, γιατί θα είναι κακή μάλλον...

Να είστε πολύ προσεχτικοί στους πειραματισμούς με τα 220V, και δεν θα είναι πολυτέλεια να χρησιμοποιήσετε ασφάλεια ανάλογη του φορτίου σας...

[2.1 Οδήγηση με 0-5V από τον υπολογιστή]

Εδώ είναι ένα απλό παράδειγμα για το πώς θα πάρετε μια απλή τάση 0-5V από τον υπολογιστή, μέσω της παράλληλης θύρας.

Back View          -----    Pin 10 - ACK
Male DB-25         |   |    Pin  9 - D7
Connector          |   |                           Pin 2 - D0
v   v                           v   Pin 1 -
~Strobe
____________________________________________________________
/                                                            \
\     13  12  11  10   9   8   7   6   5   4   3   2   1     /
\                                                          /
\     25  24  23  22  21  20  19  18  17  16  15  14     /
\______________________________________________________/

Ο ακροδέκτης 1 είναι το Strobe( αρνητικής λογικής)

Οι ακροδέκτες 2-9 είναι τα σήματα του DATA BUS, όπως αυτά διαμορφώνονται, έπειτα από μία εντολή τύπου OUT στην παράλληλη θύρα.

Ο ακροδέκτης 10 είναι το ACK, δηλαδή τον ελέγχετε εσείς, παράγοντας interrupt.

Τα 18-25 είναι βραχυκυκλωμένα και είναι η γείωση.

Πιο αναλυτικά:

<= in   DB25    Cent    Name of         Reg
=> out  pin     pin     Signal          Bit     Function Notes
------  ----    ----    --------        ---     -----------------------------
=>       1       1      -Strobe         C0-     Set Low pulse >0.5 us to send
=>       2       2      Data 0          D0      Set to least significant data
=>       3       3      Data 1          D1      ...
=>       4       4      Data 2          D2      ...
=>       5       5      Data 3          D3      ...
=>       6       6      Data 4          D4      ...
=>       7       7      Data 5          D5      ...
=>       8       8      Data 6          D6      ...
=>       9       9      Data 7          D7      Set to most significant data
<=      10      10      -Ack            S6+ IRQ Low Pulse ~ 5 uS, after accept
<=      11      11      +Busy           S7-     High for Busy/Offline/Error
<=      12      12      +PaperEnd       S5+     High for out of paper
<=      13      13      +SelectIn       S4+     High for printer selected
=>      14      14      -AutoFd         C1-     Set Low to autofeed one line
<=      15      32      -Error          S3+     Low for Error/Offline/PaperEnd
=>      16      31      -Init           C2+     Set Low pulse > 50uS to init
=>      17      36      -Select         C3-     Set Low to select printer
==      18-25   19-30,  Ground

[2.2 'Ελεγχος με Relay]

Το πιο απλό κύκλωμα που μπορεί να φτιάξει κανείς είναι το εξής:

Vcc
|
+------+
|    __|__
Relay   /^\  Diode 1N4002
Coil  /---\
|      |
+------+
|
| /
4.7K    B |/  C
parallel port >-\/\/\/\/---|        NPN Transistor: BC547A or 2N2222A
data pi                    |\  E
| V
|
parallel port >--------------+
ground pin                   |
Ground

Συνδέστε το Vcc με τάση αντίστοιχη με τον τύπο του relay που έχετε βρει (5 ή 12V). Προφανώς το relay πρέπει να διαλέξετε να είναι επαρκές για την καφετιέρα σας. Αυτό ίσως εξηγεί τους κακούς καφέδες: Οι barmen συχνά κάνουν το λάθος να βάζουν το relay αντί στον συλλέκτη (C), στον εκπομπό (E) του τρανζίστορ, πολώνοντάς το έτσι με λάθος τρόπο. Η δίοδος 1N4002 είναι για να προστατεύει το τρανζίστορ από τα ανάστροφα ρεύματα του Relay, όταν το ρεύμα σε αυτό αλλάζει. Εάν δεν την βάλετε, λογικά το τρανζίστορ θα γίνει πιο μαύρο και θα μυρίζει.

[2.3 'Ελεγχος με TRIAC #1]

Εάν θέλετε ένα απλό κύκλωμα μπορείτε να χρησιμοποιήσετε ένα Motorola MOC301[012] (οδηγός για TRIAC), μαζί με ένα γενικής χρήσης TRIAC όπως το SC141D. Το πλεονέκτημα αυτού του κυκλώματος είναι ότι δεν χρειάζεται τάση τροφοδοσίας.

Για μη επαγωγικό φορτίο το κύκλωμα είναι ως εξής:

270     1 +-------+ 6    180
+5v -VAVAVA-----+       +----VAVAVA-----+-------------- Line Hot
2 |  MOC  |               |
TTL in ---------+ 3012  +nc            VA  SC141D
|       | 4           / |
nc+       +------------/  |
+-------+               +----\/\/\/---- Line Neutral
LOAD

Εάν πρόκειται να δουλέψετε με 220V, προτιμήστε ένα 3021. Εάν έχετε επαγωγικό φορτίο ενδείκνυται να βάλετε bypass πυκνωτές, δείτε σχετικά Motorola Application Note AN-780. Οι καφετιέρες είναι κυρίως ωμικά φορτία (το θερμαντικό νήμα) και όχι επαγωγικά (όπως είναι πχ ένα μοτέρ) αλλά επειδή ποιος ξέρει τι καφετιέρα έχετε...

[2.4 'Ελεγχος με TRIAC #2]

+5VDC
|    180                      180            2.2k
+---/\/\/\----+-----+   +----/\/\/-+--/\/\/\---+-------> 120V
|    1|   |6         |           |         Hot
|    +=====+         |           | MT1
|    | MC  | TRIAC   |          +-+
|    | 3032| Driver  |        G | | TRIAC
|    +=====+         |         /| |
\    2|   |4         |        / +-+
2N3904  |----+   |          |        |  | MT2
/     |   +--------- | -------+  |
V      \              |        |  |
|      /              |        \  |
|      \ 43    .01u  ---   10k /  |
|      /       500V  ---       \  |
|      |              |        /  |
+------+              |        |  |            Neutral
|                     +--------+--+---o    o--> 120V
/                                      load
>-/\/\--|  2N3904
\
V
|
---
///
You should change resistors accordingly for 220V.

Περιγραφή κυκλώματος:

Το MC3032 είναι ένας οπτοαπομονωτής, κατάλληλος για οδήγηση TRIAC. Η αντίσταση των 180Ω ρυθμίξει το ρεύμα για τον εκπέμπον LED του οπτοαπομονωτή. Εάν χρειάζεται, αλλάξτε την τιμή της αντίστασης για να πάρετε μία λογική τιμή ρεύματος (πχ 15 mA).

Δώστε σημασία στην ένδειξη 500V για τον πυκνωτή των .01μF. Σημειώσατε ότι δεν μπορείτε να ελέγξετε αυτό το κύκλωμα δίχως φορτίο. Το TRIAC δεν θα αλλάξει αγωγιμότητα παρά μόνον εάν συνδεθεί με την πηγή παροχής εναλλασόμενου ρεύματος (δίκτυο) και με το φορτίο. Προσέξτε το φορτίο να μην είστε ΕΣΕΙΣ.

[3. Λογισμικό]

'Εφτασεεεε...

[3.1 Πρόγραμμα σε C]

Φτιάξτε ένα εκτελέσιμο, που θα κάνει χοντρικά τα εξής:

Όπου BASE = 0x3bc για /dev/lp0, 0x378 για /dev/lp1, και 0x278 για /dev/lp2, range=8.

Καλόν θα είναι να το κάνετε setuid, για να μπορεί όλος ο κόσμος να φτιάχνει καφέ.

[3.2 Σαν device driver]

Δεν έχετε παρά να διαβάσετε το kernel hacker's guide, να υλοποιήσετε έναν device driver (μπορεί να είναι και user space). Πλιιζ, κάνετέ το module, να μην κάνουμε compile όλη την ώρα. Μετά θα γράφετε:

echo baryglykos >/dev/coffee

Και θα έχετε ζεστό καφέ σε 1 λεπτό. Θυμηθείτε να δώσετε τα σωστά permission στο /dev/coffee, ανάλογα με το εάν θέλετε να φτιάχνει καφέ μόνο ο root ή όχι.

Το πλεονέκτημα αυτής της μεθόδου είναι ότι επιτρέπει να χρησιμοποιηθεί το ACK της παράλληλης θύρας, ώστε οι "έξυπνες" καφετιέρες να μπορούν να παράγουν interrupt.

Αφήνεται σαν άσκηση.

[3.3 Διασύνδεση με Internet]

Αφού έχετε υλοποιήσει το πρόγραμμα σε C (βλέπε παραπάνω), δεν έχετε παρά να φτιάξετε ένα cgi τσι σειράς (ας είναι και β' διαλογής), που θα καλεί το προγραμματάκι για να φτιάξει τον καφέ. Τι web server? apache φυσικά...

[4. Συμπτώματα υπερδοσολογίας]

[5. Επεκτάσεις]

Αυτές είναι μερικές ιδέες που είχαμε:

[6. Αναφορές]

1: http://sunsite.unc.edu/expo/1492.exhibit/c-Columbus/columbus.html

2: http://daisy.uwaterloo.ca/~alopez-o/caffaq.html

3: http://lonestar.texas.net/~andrew/f_pc_.htm

4: http://shell.rmi.net/~hisys/parport.html

5: http://sunsite.unc.edu/LDP/HOWTO/mini/IO-Port-Programming

6: http://www.redhat.com:8080/HyperNews/get/khg.html

7: http://www.hut.fi/Misc/Electronics/circuits/parallel_output.html

8: http://www.yahoo.com/Computers_and_Internet/Internet/Entertainment/Interesting_Devices_Connected_to_the_Net/Coffee_Machines/

9: http://www.cs.su.oz.au/~bob/coffee.html

10: http://einstein.et.tudelft.nl/~janssen/

11: http://circe.chinalake.navy.mil/cgi-bin/spion/snapit.cgi

12: http://www.cl.cam.ac.uk/coffee/coffee.html

13: http://www.menet.umn.edu/coffeecam/

Αρχική Σελίδα