11. Input devices¶
assignment¶
individual assignment:¶
measure something: add a sensor to a microcontroller board that you have designed and read it
group assignment:¶
probe an input device's analog levels and digital signals
individual assignment:¶
Making the board for my project¶
I planned to meseure temperature for my project this week whit a termistor NTC of 100K and 1 satchakit
here is the the satcha kit i found here


now its time to machine the pcb.

And after that soldering all the componants


here is the schema and the board i ha made in kicad to include my thermistor to be able to mesure temp.
here is the kicad files





Testing with the board with all the good connection to program with myfabisp

I have made my program with arduino

Here you have the pin connection for the atmega 328p with arduino

And here you have my code
// shema pinout : https://camo.githubusercontent.com/d7b8053397a8ad942514cdc9b36636bb368a4c16/687474703a2f2f692e696d6775722e636f6d2f55734b464d454f2e6a7067
//tutoriel LCD : https://www.arduino.cc/en/Tutorial/HelloWorld?from=Tutorial.LiquidCrystal
// tutoriel thermistance : https://learn.adafruit.com/thermistor/using-a-thermistor
#include <LiquidCrystal.h>
// définition des variables globales
double temp = 0;
//définition des pins
#define pinThermistor 14
#define pinLEDrouge 13
#define pinMOSFET 15
// définition des constantes
#define T 215
// resistance at 25 degrees C
#define THERMISTORNOMINAL 100000
// temp. for nominal resistance (almost always 25 C)
#define TEMPERATURENOMINAL 25
// how many samples to take and average, more takes longer
// but is more 'smooth'
#define NUMSAMPLES 5
// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3950
// the value of the 'other' resistor
#define SERIESRESISTOR 100000
int samples[NUMSAMPLES];
//config du LCD
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2; //adapter les pins (fait)
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// put your setup code here, to run once:
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0,0);
lcd.print("Temperature ");
//config des pins
pinMode(pinLEDrouge,OUTPUT);
pinMode(pinMOSFET,OUTPUT);
pinMode(pinThermistor,INPUT);
}
void loop(void) {
uint8_t i;
float average;
// take N samples in a row, with a slight delay
for (i=0; i< NUMSAMPLES; i++) {
samples[i] = analogRead(pinThermistor);
delay(10);
}
// average all the samples out
average = 0;
for (i=0; i< NUMSAMPLES; i++) {
average += samples[i];
}
average /= NUMSAMPLES;
// convert the value to resistance
average = 1023 / average - 1;
average = SERIESRESISTOR / average;
float steinhart;
steinhart = average / THERMISTORNOMINAL; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Invert
steinhart -= 273.15; // convert to C
lcd.setCursor(0,1);
lcd.print(steinhart);
lcd.write(223);
lcd.print("C");
delay(1000);
// put your main code here, to run repeatedly:
//checker la valeur de température
//acquérir le signal de l'ADC
//convertir la valeur en °C
//si en dessous de 240°C, on chauffe et on allume la LED de chauffe
//si au dessus de 240°C, on arrête de chauffer et on allume la LED de stabilisation
if(steinhart<=T){
digitalWrite(pinMOSFET, HIGH);
digitalWrite(pinLEDrouge, HIGH);
}else{
digitalWrite(pinMOSFET, LOW);
digitalWrite(pinLEDrouge, LOW);
}
}

you can also see that i have include a LCD (normally it is the work for week12) to be able to see the temperature. Here is the result.

developpent of my own board¶
see my final project to see my future Board