Introduction: EAL - Embedded - Coffee Machine

About: Made by; clau3111, nico749g and hans1627

ENGLISH VERSION COMING SOON!

Vi er en grupper studerende på 2. semester fra uddannelsen automationsteknolog, der gennem et selvvalgt projekt har tegnet, bygget og programmeret en kaffemaskine fra bunden. Vi vil på denne side forklare og illustrer forløbet fra start til slut,. Dette er kaffemaskine V1.0 som vil blive videreudvikle på under næste semester.

Step 1: Stykliste og Materialer

Step 2: Flowchart

Step 3: I/O Liste

Step 4: Fritzing Tegning

Step 5: Program

Step 6: Gennemgang af Kaffemaskinen og Video Demonstration

Step 7: Forbedringer og Tilføjelser

Step 1: Stykliste Og Materialer

  • 1 - Arduino MEGA 2560
  • 1 - Breadboard
  • 11 - 220 Ohm resistor
  • 1 - 100 Ohm resistor
  • 1 - Niveauvipper
  • 1 - Trykknap
  • 3 - Vippeafbryder
  • 3 - Dioder
  • 3 - Motor
  • 1 - Varmelegme
  • 1 - Pumpe
  • 1 - PT 100 føler
  • 2 - Relækort m. 4 relæer
  • 1 - 230 V Tilslutning
  • 1 - 9 V Strømforsyning
  • 1 - Ståltank
  • 3 - Siloer med snegl
  • 1 - Tragt
  • 1 - Kabinet
  • 1 - Drypbakke

Dette er de komponenter der hovedsageligt er blevet brugt til at fremstille kaffemaskinen. Derudover er der brugt ledning, samlemuffe, skruer osv. til at fortråde og samle maskinen. Til fremstilling af maskinen har vi selv produceret nogle emner. Tragten, drypbakken og de 3 siloer med tilhørende snegl er 3D printet. Disse elementer er tegnet i Tinkercad (et gratis online program), og printet i FabLab. FabLab er et værksted vi har adgang til via EAL, hvor der er adgang til diverse maskiner. Det er også her vi har konstrueret kabinettet, som består af 6 mm MDF plade. Kabinettet er tegnet i Abobe Illustrater og derefter laserskåret. Kaffemaskinen er dekoreret med forskellige klistermærker der ligeledes er printet i FabLab. Den rustfri ståltank har gruppen selv svejset og varmelegemet er taget fra en aflagt elkedel. Derudover er de resterende komponenter tilkøbt.

Step 2: Flowchart

Vi har illustreret gennem et flowchart, hvordan man vælger sin drik. Det viser de forskelle "trin" man kan befinde sig i og betingelserne for at gå videre til næste "trin". Vores flowchart et tegnet i draw.io, som er et gratis online program hvor man kan tegne forskille diagrammer og illustrationer.

Step 3: I/O Liste

Denne I/O liste giver et overblik over kaffemaskines komponenters fortrådning. Det vil sige at f.eks. tager et kig på "Start", kan man se at det er en digital indgang med et 5V signal, der et tilslutte port 28 på arduinoen. Ligeledes kan vi kigge på pumpen, som er en digital udgang, der er tilslutte port 43. Den har også et 5V signal, der aktivere et relæ; da pumpen er 230V forsynet.

Step 4: Fritzing Tegning

Eldiagrammet er tegnet i gratis programmet fritzing. Programmet er super i forholdt til vores projekt, da fritzing indeholder de fleste af arbuinos komponenter. Tegningen illustrer hvordan styrringen i kaffemaskinen er fortrådet.

På tegningen ses et breadboard, det fungere som et samlingspunkt for alle ledningerne, her forbindes de forskellige komponenter til og videre her fra til arduinoen. De 5 komponenter i venstre side af tegningen (Start, vippekontakt, Kaffe, Mælk og Kakao), er alle digitalt indgange. De er monteret med en såkaldt pull-down modstand, dette gøres for at arduinoen kan skelne mellem om indgangen er aktiv eller ej. "PT 100" er føleren der er monteret i bunden af tanken, og fungere som vores temperaturmåler. Det er en analog indgang, hvilket betyder at vi har og gøre med et varierende signal.

De 3 dioder, (Klar, Brygger og Fejl) er digitale udgange og fortæller om hvilken tilstand kaffemaskinen er i. De 3 DC motorer i toppen af tegningen er dem der trækker sneglen i bunden af vores siloer. De er monteret på hver sit overdragerelæ, da de minimum kræver 9V og arduinoen kun levere 5V. Ydermere trækker de en højere strøm end hvad arduinoen kan levere. Pumpen og varmelegemet er 230V forsynet og kræver derfor også er overdragerelæ, som bliver aktiveret at en digital udgang.

Til sidst har vi symbolet 230V som er vores tilgang til kaffemaskinen. Det er et hanstik monteret på bagsiden af maskinen hvor der tilsluttes et powerkabel direkte fra en stikkontakt.

OBS. Hvis der er nogle der selv ønsker at gå igang med et projekt magen til dette, skal det påpeges at det er en 230V istallation og man skal huske at tage sige sine forholdsregler, da dette kan have fatale konsekvenser.

Step 5: Program

<p>//indgange<br>  int kaffe;
  int dbkaffe; 
  int kakao; 
  int dbkakao; 
  int maelk; 
  int dbmaelk; 
  int temp; 
  int niveau; 
  int start; </p><p>//udgange
  int kaffemotor; 
  int kakaomotor; 
  int maelkemotor; 
  int pumpe; 
  int done; 
  int varme; 
  int brygning;
  int klar;
  int brygger;
  int fejl;
  int p;</p><p>void setup() {</p><p>// navngiver ind- og udgange</p><p>//indgange
  temp =A0;
  kaffe =22;
  dbkaffe =23;
  kakao =24;
  dbkakao =25;
  maelk =26;
  dbmaelk =27;
  start =28;
  niveau =29;</p><p>//udgange
  kaffemotor =40;
  kakaomotor =41;
  maelkemotor =42;
  pumpe = 43;
  varme = 44;
  klar = 45;
  brygger = 46;
  fejl = 47;</p><p>//fortæller hvilke der er indgange og udgange 
  pinMode(22,INPUT);
  pinMode(23,INPUT);
  pinMode(24,INPUT);
  pinMode(25,INPUT);
  pinMode(26,INPUT);
  pinMode(27,INPUT);
  pinMode(28,INPUT);
  pinMode(29,INPUT);
  pinMode(40,OUTPUT);
  pinMode(41,OUTPUT);
  pinMode(42,OUTPUT);
  pinMode(43,OUTPUT);
  pinMode(44,OUTPUT);
  pinMode(45,OUTPUT);
  pinMode(46,OUTPUT);
  pinMode(47,OUTPUT);
  
//sætter de indgange der skal være tændt i stanby
  digitalWrite(kaffemotor,HIGH);
  digitalWrite(kakaomotor,HIGH);
  digitalWrite(maelkemotor,HIGH);
  digitalWrite(pumpe,HIGH);
  digitalWrite(varme,HIGH);
  digitalWrite(klar,HIGH);</p><p>}</p><p>void loop() {
  
//tænder for varmen når vandet bliver for koldt    
  if  (analogRead(A0)>=435) digitalWrite(varme,LOW);     </p><p>//slukker for varmen når vandet er varmt nok     
  else if (analogRead(A0)<=430) digitalWrite(varme,HIGH);   
  
//hvis vandet ikke er varmt nok eller der ikke er vand i beholderen så tænder den "fejl" dioden og slukker "klar" dioden  
  if((digitalRead(niveau)==HIGH)||(analogRead(temp)>=438)){    
    digitalWrite(fejl,HIGH);                                  
    digitalWrite(klar,LOW);}
    
//hvis der er vand nok i beholderen og varmt nok så tænder den "klar" dioden og slukker "fejl" dioden    
    else{                                                     
    digitalWrite(fejl,LOW);                                   
    digitalWrite(klar,HIGH);
    p = analogRead(A0);
  Serial.begin(9600);
    Serial.println(p);
    }
    
    
// hvis der er vand i beholderen, vandet er varmt nok og man trykker start så starter processen  
if ((digitalRead(start)==HIGH)&&(digitalRead(niveau)==HIGH)&&(analogRead(temp)<=438)){    </p><p>//læser hele programmet engang efter der er trykket start    
    for (brygning=0;brygning<=0;brygning++){ </p><p>//tænder "brygger" dioden
      digitalWrite(brygger,HIGH);             </p><p>//slukker"klar" dioden     
      digitalWrite(klar,LOW);                 
      
//hvis kaffe 1 er valgt kører dette "step"          
      if (digitalRead(kaffe)==HIGH){          
        digitalWrite(kaffemotor,LOW);
        delay(2000);
        digitalWrite(kaffemotor,HIGH);}
        
//hvis kaffe 2 er valgt kører dette "step"
       else if (digitalRead(dbkaffe)==HIGH){  
        digitalWrite(kaffemotor,LOW);
        delay(4000);
        digitalWrite(kaffemotor,HIGH);}</p><p> //hvis kakao 1 er valgt kører dette "step"     
        if (digitalRead(kakao)==HIGH){       
        digitalWrite(kakaomotor,LOW);
        delay(2000);
        digitalWrite(kakaomotor,HIGH);}
        
//hvis kakao 2 er valgt kører dette "step"       
       else if (digitalRead(dbkakao)==HIGH){  
        digitalWrite(kakaomotor,LOW);
        delay(4000);
        digitalWrite(kakaomotor,HIGH);}</p><p>//hvis mælk 1 er valgt kører dette "step"       
        if (digitalRead(maelk)==HIGH){        
        digitalWrite(maelkemotor,LOW);
        delay(2000);
        digitalWrite(maelkemotor,HIGH);}
        
//hvis mælk 2 er valgt kører dette "step"       
       else if (digitalRead(dbmaelk)==HIGH){  
        digitalWrite(maelkemotor,LOW);
        delay(4000);
        digitalWrite(maelkemotor,HIGH);}</p><p>//fylder vand i koppen       
        digitalWrite(pumpe,LOW);              
        delay(5000);
        digitalWrite(pumpe,HIGH);
        
//tænder "klar" dioden        
        digitalWrite(klar,HIGH);              
       
//slukker "brygger" dioden        
        digitalWrite(brygger,LOW);            
        
             
    }}
    else(continue);
  }
    
    
    </p><p>}</p>

Step 6: Gennemgang Af Kaffemaskinen Og Video Demonstration

Fronten på kaffemaskinen er udstyret med 3 dioder, 3 vippeknapper og 1 startknap. De 3 dioder indikere hvilken tilstand maskinen befinder sig i. Den grønne diode "Klar" fortæller at maskinen er nu er klar til at hælde en drik op. Den gule diode "Brygger" giver besked om at der er blevet valgt en drik og at kaffemaskinen er igang med at skænke drikke. Den røde diode "Fejl" indikere en fejltilstand på maskinen, det kan enten være at der ikke er vand nok i tanken eller at temperaturen ikke er nået, og det er derved ikke muligt at bestille en drik. De 3 vippeknapper "Kaffe", "Kakao" og "Mælk", bruges til at dossere henholdsvis kaffe-, kakao- og mælkepulver. Vippeknapperne har 3 positioner 1,0 og 2. Enten kan de stå i neutral position altså 0 og derved vælger man ikke at dosere det valgte produkt. Position 1 er for en enkelt dossering og position 2 giver en dobbelt dossering. Et eksempel kunne være "Kaffe" = 2 og "Mælk" = 1. Man kan også sætte de 3 vippeknapper til 0 og derved få skænket en kop varmt vand til the. Den sidste knap er "Start", den trykkes på efter man har valgt sin drik og derved igangsætter brygning af drikken.

Step 7: Forbedringer Og Tilføjelser

Dette projekt er en prototype og der er opstået nogle problematikker undervejs i projektet. Disse problemer vil fremadrettet bliver forbedret og tilrettet. F.eks. har vi en udfordring med vores kakaopulver da det pakker i siloen, og derved får vi ikke en rigtige dossering. I dette tilfælde har vi snakket om at konstruere en snegl med ekstra store "vinger", som skal stå lodret i siloen for at få pulveret ned i siloen.

Derudover har vi snakket om forskellige mulige tilføjelser til vores kaffemaskine:

  • En føler hvor koppen er placeret, så det er muligt at registrer om der er en kop eller ej, som en form for sikkerhed, så der ikke bliver skænket en drik uden kop.
  • Udskiftning af de 3 dioder med en LCD skærm, for at få en bedre tilbagemelding af kaffemaskinen,(fejl, temperatur, indikator for bryggestatus osv.).
  • Føler i de 3 siloen, så det er muligt at få en tilbagemelding hvornår de skal genopfyldes.
  • Muligvis styrring med af bluetooth eller wifi modul.