author

Zano64

Inbox View Profile
2Instructables708Views5Comments

Tell us about yourself!

  • DIY Digital Soldering Station (Hakko 907)

    An alternative is the RFD3055LE, another MOSFET compatible with the ARDUINO direct link. The one I used works perfectly.

    View Instructable »
  • DIY Digital Soldering Station (Hakko 907)

    I refurbished an old iron out of use which was shutting down the house power due to earth fault.In the comments below I explain how I slightly modified and simplified the design.Thanks for the idea ARCAS.

    View Instructable »
  • DIY Digital Soldering Station (Hakko 907)

    Hi Ascas and thank you very much for your idea to refurbish a soldering iron.I had one which switched off the house when heating, probably due to an earth fault, so unused.I bought a new tip for almost notning (be careful to select the right one), the LCD device and used an available ARDUINO NANO. It works perfectly, but with some modifications.First I confirm that the power pinout of the LM358 is wrong.Modif 1 : In fact I do not think it necessary to have an accuracy of 1°C, so I simplified the schematic (see below) by a direct connexion of the sensor to the ARDUINO. So lower accuracy but no use of the OPAMP.Modif 2 : I added some hysteresis on the output (+-2°C) to avoid too frequent switching of the MOSFET.Modif 3 : I noticed that when the pot was at 0 there was an activity of the outp…

    see more »

    Hi Ascas and thank you very much for your idea to refurbish a soldering iron.I had one which switched off the house when heating, probably due to an earth fault, so unused.I bought a new tip for almost notning (be careful to select the right one), the LCD device and used an available ARDUINO NANO. It works perfectly, but with some modifications.First I confirm that the power pinout of the LM358 is wrong.Modif 1 : In fact I do not think it necessary to have an accuracy of 1°C, so I simplified the schematic (see below) by a direct connexion of the sensor to the ARDUINO. So lower accuracy but no use of the OPAMP.Modif 2 : I added some hysteresis on the output (+-2°C) to avoid too frequent switching of the MOSFET.Modif 3 : I noticed that when the pot was at 0 there was an activity of the output LED, probably due to noise. To avoid this I consider that the power is OFF when the pot is <=10.Modif 4 : And of course I tuned the parameters according to my iron tip, with a maximum reachable temperature of 500°C.So thanks again.Here is my final code (with some French comments)./* Inspiré de ASCAS sur Instructables modif1 = suppression de l'ampliOP et attaque directe du capteur de température vers ARDUINO(moins précis, mais pas nécessaire d'avoir un pas de 1°C en précision de réglage)modif2 = ajout d'hystérésis +-2°C pour la chauffemodif3 = chauffage OFF si potentiomètre <=10 (au-lieu de ==0)modif4 = réglages adaptés à mon fer avec limitation à 500°C */ #include <Wire.h> #include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,20,4);#define tempSensor A0#define knob A7#define iron 10#define LED 3intminTemp = 22, //Minimum aquired iron tip temp during testing (°C)maxTemp = 500, //Maximum aquired iron tip temp during testing (°C)minADC = 108, //Minimum aquired ADC value during minTemp testingmaxADC = 350, //Maximum aquired ADC value during minTemp testingmaxPWM = 255, //Maximum PWM PoweravgCounts = 20, //Number of avg sampleslcdInterval = 80, //LCD refresh rate (miliseconds) pwm = 0, //System VariabletempRAW = 0, //System VariableknobRAW = 0, //System Variablecounter = 0, //System VariablesetTemp = 0, //System VariablesetTempAVG = 0, //System VariablecurrentTempAVG = 0, //System VariablepreviousMillis = 0; //System Variablefloat currentTemp = 0.0, //System Variablestore = 0.0, //System VariableknobStore = 0.0; //System Variablevoid setup(){ pinMode(tempSensor,INPUT); //Set Temp Sensor pin as INPUT pinMode(knob,INPUT); //Set Potentiometer Knob as INPUT pinMode(iron,OUTPUT); //Set MOSFET PWM pin as OUTPUT pinMode(LED,OUTPUT); //Set LED Status pin as OUTPUT lcd.backlight(); lcd.init(); lcd.clear(); lcd.setCursor(0,1);lcd.print("PRESET T: "); lcd.setCursor(0,0);lcd.print("ACTUAL T:"); Serial.begin(9600); // Pour debugging while (!Serial); // wait for serial monitor Serial.println("Fer à souder"); }void loop(){ //--------Gather Sensor Data--------// knobRAW = analogRead(knob); //Get analog value of Potentiometer setTemp = map(analogRead(knob),0,1023,minTemp,maxTemp); //Scale pot analog value into temp unit tempRAW = analogRead(tempSensor); //Get analog value of temp sensor currentTemp = map(analogRead(tempSensor),minADC,maxADC,minTemp,maxTemp); //Sacle raw analog temp values as actual temp units //--------Get Average of Temp Sensor and Knob--------// if(counter<avgCounts){ //Sum up temp and knob data samples store = store+currentTemp; knobStore = knobStore+setTemp; counter++; } else{ currentTempAVG = (store/avgCounts)-1; //Get temp mean (average) setTempAVG = (knobStore/avgCounts); //Get knob - set temp mean (average) knobStore=0; //Reset storage variable store=0; //Reset storage variable counter=0; //Reset storage variable } //--------PWM Soldering Iron Power Control--------// if(analogRead(knob)<=10){ //Turn off iron when knob as at its lowest (iron shutdown) digitalWrite(LED,LOW); pwm=0; } else if(currentTemp<=setTemp-2){ //Turn on iron when iron temp is lower than preset temp avec hystérésis digitalWrite(LED,HIGH); pwm=maxPWM; } else if(currentTemp>=setTemp+2){ //Turn off iron when iron temp is higher than preset temp avec hystérésis digitalWrite(LED,LOW); pwm=0; } analogWrite(iron,pwm); //Apply the aquired PWM value from the three cases above// Debugging Serial.print("knobRAW = "); Serial.print(knobRAW); Serial.print(" "); Serial.print("setTemp = "); Serial.print(setTemp); Serial.print(" "); Serial.print("tempRAW = "); Serial.print(tempRAW); Serial.print(" "); Serial.print("currentTemp = "); Serial.print(currentTemp); Serial.print(" "); Serial.print("pwm = "); Serial.println(pwm); //--------Display Data--------// unsigned long currentMillis = millis(); //Use and aquire millis function instead of using delay if (currentMillis - previousMillis >= lcdInterval){ //LCD will only display new data ever n milisec intervals previousMillis = currentMillis; if(analogRead(knob)==0){ lcd.setCursor(10,1);lcd.print("OFF "); } else{ lcd.setCursor(10,1);lcd.print(setTempAVG,1);lcd.print((char)223);lcd.print("C "); } if(currentTemp<minTemp){ lcd.setCursor(10,0);lcd.print("COOL "); } else{ lcd.setCursor(10,0);lcd.print(currentTempAVG,1);lcd.print((char)223);lcd.print("C "); } } }

    View Instructable »
  • COVID-19 Social Distance Meter

    Thanks for this great idea. The distance is 1m for France.The box comes from NIVEA cream.I have been obliged to modify the code, which was not working properly with my ARDUINO Micro.I used the library "ultrasonic".Here is the code :#include <Ultrasonic.h>/* Allume une LED verte ou rouge suivant la distance mesuréepar le capteur à ultrasons Copié depuis instructables décembre 2020Modifié en utilisant la bibliothèque ultrasonic*/int LED_GREEN = 3;int LED_RED = 2;int TRIG_PIN = 6;int ECHO_PIN = 5; Ultrasonic ultrason(TRIG_PIN, ECHO_PIN,40000UL);long duration;int distance;void setup() { Serial.begin(9600); // initialize led pins as output. pinMode(LED_GREEN, OUTPUT); pinMode(LED_RED, OUTPUT); // initialize sensor pins pinMode(ECHO_PIN, INPUT); pinMode(TRIG_PIN, OUTPU…

    see more »

    Thanks for this great idea. The distance is 1m for France.The box comes from NIVEA cream.I have been obliged to modify the code, which was not working properly with my ARDUINO Micro.I used the library "ultrasonic".Here is the code :#include <Ultrasonic.h>/* Allume une LED verte ou rouge suivant la distance mesuréepar le capteur à ultrasons Copié depuis instructables décembre 2020Modifié en utilisant la bibliothèque ultrasonic*/int LED_GREEN = 3;int LED_RED = 2;int TRIG_PIN = 6;int ECHO_PIN = 5; Ultrasonic ultrason(TRIG_PIN, ECHO_PIN,40000UL);long duration;int distance;void setup() { Serial.begin(9600); // initialize led pins as output. pinMode(LED_GREEN, OUTPUT); pinMode(LED_RED, OUTPUT); // initialize sensor pins pinMode(ECHO_PIN, INPUT); pinMode(TRIG_PIN, OUTPUT);}void loop() { distance = ultrason.read();// active le capteur et retourne la distance en CM // Displays the distance on the Serial Monitor Serial.print(distance); Serial.println("cm"); // Set the led state based on the distance digitalWrite(LED_GREEN, distance >= 100 ? HIGH : LOW); digitalWrite(LED_RED, distance < 100 ? HIGH : LOW);}

    View Instructable »
  • Zano64's instructable Casquette De Golf's weekly stats:
    • Casquette De Golf
      109 views
      0 favorites
      0 comments
  • Zano64 entered Casquette De Golf in the Sensors Contest contest
  • Zano64's instructable Mist Free Bathroom Mirror's weekly stats:
    • Mist Free Bathroom Mirror
      180 views
      2 favorites
      1 comments