Friday, June 23, 2023

Tutorial on Routing Electrical Signal with Mechanical Relays

 In this two part series we take a look at mechanical relays: different types, terminology, theory of operation, and design considerations. We finish part one with a demo of an armature relay showing its inside, how to actuate it, and capture its flyback voltage waveform with an Oscilloscope. In part 2 we look at a simple circuit that allows us to control armature or reed relays with a simple digital pin from a microcontroller. We also look at a circuit design that allows us to avoid hot switching when using mechanical relays.






Check us out on Patreon for exclusive content related to this series: https://www.patreon.com/forcetronics


Wednesday, April 26, 2023

Designing an Adjustable LED Drive Circuit




In this video series we implement an adjustable LED Drive circuit using the AL8862FF-7. In part 1 we review the target LED applications for our drive circuit and how the switch mode buck architecture of the AL8862FF-7 LED drive IC works. We then look at the schematic design for our circuit. In part 2 we look at a demo of our LED Drive Circuit in action. We also take a look at the PCB layout of the LED Drive Circuit. At the end we look at measurement data from our circuit including the max and adjusted current values as well as look at measurements to calculate the efficiency of the design. The extended Patreon version of the video include more measurement data on the design and reviews the ESP32 Arduino code used in the demo.
Link to ForceTronics Patreon Page: https://www.patreon.com/forcetronics AL8862FF-7 datasheet: https://www.mouser.com/datasheet/2/115/AL8862-1274720.pdf



Thursday, February 23, 2023

Building a Dynamic ESP32 Wireless Network using the ESP-Now Protocol

In this three part series we will design a dynamic wireless network using ESP32 modules and leveraging EXPRESSIF's ESP-NOW communication protocol.

In part 1 we provide an overview of the ESP-NOW communication protocol and talk about how our dynamic wireless network will work.


In part 2 we look at a simple implementation of ESP-Now that will serve as a foundation for the dynamic network we will design and cover in part 3.



Patreon page link: https://www.patreon.com/forcetronics

ESP-NOW documentation: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html


**************Part 3 coming soon*******************************



Friday, January 6, 2023

Designing a Li-Ion and USB Power Circuit with Built-in Charging

This video series will take you step by step through how to design a circuit that can be powered from a USB input (5V) or from a Lithium Ion battery cell and output a regulated 5V. The design includes a battery charging circuit and a circuit that automatically isolates the battery from the power bus when USB power is applied.

Please support ForceTronics on Patreon: patreon.com/forcetronics

In part one we review the overall plan for the design, go over Li-ion battery cell basics, and give a crash course on boost switching voltage regulators.


Battery university link: https://batteryuniversity.com/


In part two we go into detail on our boost switching regulator design using Texas Instruments TPS61202 5-V fixed output voltage boost converter.



Link to TI’s TPS61202 product page: https://www.ti.com/product/TPS61202?qgpn=tps61202

In part three we look at the battery charging circuit and the power source isolation circuit


Link to MAX1898 battery charging IC datasheet: https://www.mouser.com/datasheet/2/256/MAX1898-1515496.pdf

In part 4 we look at the PCB layout for our circuits and we see a demo of our circuits in action




Circuit Block Diagram




Sunday, December 4, 2022

How to Design a Programming Circuit for the ESP32

In the video we look at how to design a circuit for programming an ESP32 module. We also explain the Strapping Pins on the ESP32 and how they work.



Oscilloscope Capture of EN pin and GPIO0 setting ESP32 in Download Boot Mode



Sunday, November 27, 2022

How to Use a USB Type-C Connector in Your Next Microcontroller Based Project

In this video we give an overview of the USB type-C connector standard along with other related USB standards. We then look at an example design that implements a USB type-C connector and converts the USB 2.0 communication to serial or UART communication. You can then use the serial data to communicate, debug, or program your microcontroller for programming environments such as Arduino.



USB Type C Connector example implementation



USB 2.0 communication converted to UART / Serial



Wednesday, September 14, 2022

How to Control Water Flow with Arduino IoT Cloud and a Solenoid Parts 1 and 2

In this two part series we look at how to control a Solenoid using an ESP32 board and the Arduino IoT Cloud. In part one we focus on what a solenoid is and the hardware needed to drive a solenoid open or closed. In part 2 we focus on setting up the Arduino IoT Cloud control.

\



Link to tutorial on setting up device on Arduino IoT Cloud: https://docs.arduino.cc/arduino-cloud/getting-started/esp-32-cloud


//**************Arduino Code from Tutorial*********************
#include "thingProperties.h"

#define SOLENOID_PIN 21

void setup() {
  pinMode(SOLENOID_PIN,OUTPUT);
  digitalWrite(SOLENOID_PIN,LOW);

  // Defined in thingProperties.h
  initProperties();

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  /*
     The following function allows you to obtain more information
     related to the state of network and IoT Cloud connection and errors
     the higher number the more granular information you’ll get.
     The default is 0 (only errors).
     Maximum is 4
 */
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  ArduinoCloud.update();
  
  if(water_Scheduler.isActive() || solenoidState) {
    digitalWrite(SOLENOID_PIN, HIGH);
  }
  else {
    digitalWrite(SOLENOID_PIN, LOW);
  } 
}



/*
  Since SolenoidState is READ_WRITE variable, onSolenoidStateChange() is
  executed every time a new value is received from IoT Cloud.
*/
void onSolenoidStateChange()  {
  // Add your code here to act upon SolenoidState change
  /*
  if (solenoidState) {
    digitalWrite(SOLENOID_PIN, HIGH);
  }
  else {
    digitalWrite(SOLENOID_PIN, LOW);
  } 
  */
}

/*
  Since WaterScheduler is READ_WRITE variable, onWaterSchedulerChange() is
  executed every time a new value is received from IoT Cloud.
*/
void onWaterSchedulerChange()  {
  // Add your code here to act upon WaterScheduler change
}