Monday, February 27, 2017

Reduce Noise in Your Sensor Measurements with an Active Low Pass Filter Part 1

In this three part series we look at how to design a signal conditioning circuit to increase the accuracy and resolution of your ADC measurements. The signal conditioning circuit consists of a double pole active Sallen Key Low Pass Filter and a non-inverting op amp. The filter portion is meant to attenuate high frequency noise from your sensor signal to increase measurement accuracy. The amplifier portion scales the signal up to the full range of the ADC to ensure you are getting max resolution.




You can find the online filter calculator used in part one at this link: http://sim.okawa-denshi.jp/en/OPseikiLowkeisan.htmk

You can access the LTspice file on Github at: https://github.com/ForceTronics/Sallen-Key-Low-Pass-Filter-Design/tree/master

Sallen-Key Low Pass Filter Circuit with Amplifier Stage in LTspice

Wednesday, February 1, 2017

Accessing Hidden Pins on the Arduino Zero

In this video we look at how you can access six additional digital pins from your Arduino Zero board. We also take a look at some flexible wired communication options you can take advantage of on the Arduino Zero.






Link to Adafruit tutorial referenced in the video: https://learn.adafruit.com/using-atsamd21-sercom-to-add-more-spi-i2c-serial-ports/creating-a-new-serial

Path on Windows to get to variants.cpp: C:\Users\yourname\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.6

Zero pin out chart from video:


//**********************Arduino Code from the video*********************
//This code is free to use and modify at your own risk

bool tog = false; //used to toggle LEDs on and off

void setup() {
  pinMode(38,OUTPUT); //This is the pin labeled "ATN"
  pinMode(22,OUTPUT); //This is MISO pin on ICSP header
  pinMode(20,OUTPUT); //This is SDA pin
  SerialUSB.begin(57600); //this is the native USB port
  Serial.begin(57600); //this is the programming port
  Serial1.begin(57600); //this is for pins D0 and D1
}

void loop() {

  if(tog) { //set each of the pins to high to turn LEDs on
    digitalWrite(38,HIGH);
    digitalWrite(22,HIGH);
    digitalWrite(20,HIGH);
    tog = false;
  }
  else { //set each pin to low to turn them off
    digitalWrite(38,LOW);
    digitalWrite(22,LOW);
    digitalWrite(20,LOW);
    tog = true;
  }

  delay(1500); //delsy for 1.5 seconds
}