Individual assignment

Measure something: add a sensor to a microcontroller board that you have designed and read it.

I chose a flex sensor to make this practice. LINK

Before starting this practice I have decided to design an arduino compatible board based on the atmega 328p microcontroller which was inspired by the arduino UNO board to be able to test different sensors and input devices.

I designed the board in the EAGLE software

For manufacturing use the CNC machining process to generate the raster and cut files in the fabmodules tool.

For fabrication use a 1610 CNC milling machine

Then I proceed to collect the circuit components and solder them

Once the board was ready, I proceeded to connect the sensor, for this it is necessary to connect a resistor creating a pull down configuration as shown in the image

Programming

Now, I proceed with the programming, for this I use the Arduino IDE. The programming of the flex sensor is very basic, it is only necessary to perform a digital analog reading.



// These constants won't change. They're used to give names to the pins used:
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(115200);
pinMode(13,OUTPUT);
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);
  // map it to the range of the analog out:
  outputValue = map(sensorValue, 1023, 950, 0, 10);
  // change the analog out value:
  analogWrite(analogOutPin, outputValue);

  // print the results to the Serial Monitor:
  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue);

if(outputValue>5){
  digitalWrite(13,1);
  
  }
  else{
    digitalWrite(13,0);
    }

  // wait 2 milliseconds before the next loop for the analog-to-digital
  // converter to settle after the last reading:
 delay(100);
}  
								
							

Now, before loading the developed program to our board from the Arduino IDE, it is first necessary to load a compatible firmware, in this case I use the EduAtmega328p firmware developed by Edu Cartagena, which works very well.

Once the firmware is loaded onto our board, we can load the program normally as on any arduino board. And the result was this.

Serial Monitor

Conclusion

  • I made some mistakes with the soldering, so now I always recheck every single way to avoid the future problems.
  • The better way to learn about this new stuff is work in a group, then you can learn about the way your classmates can teach you about the right way to fix problems.
  • After to try a lot of times to get the code the best way is being logic about the understanding on your directions.

Files