Editor Version ×
recommended

Pro Edition

free

Brand new interactions and interfaces

Smooth support for design sizes of over 3W

devices or 10W pads

More rigorous design constraints, more

standardized processes

For enterprises, more professional users

Std Edition

Easy to use and quick to get started

The process supports design scales of 300

devices or 1000 pads

Supports simple circuit simulation

For students, teachers, creators

Ongoing

STD I made this Cool Digital Trainer Kit

I made this Cool Digital Trainer Kit

Project tags

License

GPL 3.0

License: GPL 3.0

Mode:

Mode

Editors' pick

Editors' pick

  • 102
  • 0
  • 1
Update time: 2023-03-18 17:28:37
Creation time: 2023-03-18 17:21:02
Description

Description

I know the struggle of an electronics student while learning and practicing the digital circuits. In digital circuit we need a lot of external input/ output interface and different clock frequencies. That’s why I designed this digital trainer kit. Which consists of a lot of onboard helping elements. I want to keep it minimal that is why I go with JLCPCB SMT assembly service.

It is the first version of kit which work on a stable logic 5volt. And because of operational amplifier here the kit has dual rail power supply feature. In center 400 pin breadboard space for mounting different ICs. Transformer input, SMD led Input/ output and DIP selection switch for input. Then I added few more features like BCD to 7 segment decoder and CLOCK frequency generator with feedback display.

Here the inputs and outputs LEDs are directly coupled with logic 5 volt but to make it more stable we can add switching transistors to it. And in the PWM/ clock generator a dedicated DDS generator can improve the performance as well as accuracy.

KIT Features:

1) 8-bit input

2) 8-bit output

3) BCD to 7 segment decoders

4) Dual rail power supply

5) Headers for power Input/output

6) Clock generator with display

7) 400 pin Breadboard space

8) Minimal size

Circuit Diagram:

Here you can find the circuit for this kit, I replicate a Arduino Clock generator project in this to make a stable clock for digital circuit testing. This can produce a clock by dividing the Arduino 16Mhz crystal clock in different small units. Duty cycle and frequency of this clock circuit can be selected through 3 tactile switches.

The main reason to get the PCB service from JLCPCB is to minimize the size of board and to get the best quality out of it. The 8 channel inputs and outputs are turned on a logic voltage (not specific one 3.3-7v). Then a BCD to 7 segment convertor (74LS47) is there which is to verify the counter operations. In the power section a 3 wire transformer input pins, full bridge rectifier, dual power supply output and 5volt regulator with on/off slide switch is there. A lot of connections may produce noise which may cause problems in circuit operation and device behaviour which can be reduced by some power line filtering capacitors.

 

PCB And Gerber Files Design:

The files are designed in EasyEDA and fabricated by JLCPCB SMT assembly, because there are a lot of small components which may increase the soldering and assembling time. JLCPCB SMT assembly simply do a great job the cost of per soldering joint is around $0.004 and PCB assembly services starting from just $8.

If you want to make this kit here are the Gerber files which can be used to place the order directly. All the info about the code is shared on my GitHub page. Or you can download the PCB files and code from here.

 

Programming The Clock:

Here Arduino’s atmega328p as a microcontroller is used for the clock interface, and new chip does not have bootloader. First the bootloader is burned through the other microcontroller (Arduino board) and then we flash the code in it. All the programming headers are given in the back side of PCB which can be directly connected to external MCU via headers or jumpers. See from here how to burn bootloader and upload the code.

 

Arduino Code For Clock:

All the required libraries can be directly downloaded from the manage library section under the tools menu.

#include <TimerOne.h>
#include <Wire.h> 
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
unsigned long t=1000,f,k=512;// default 1000 μs (1000 Hz), meander, pulse 
byte k1,kn,kn1,kn2;
int drive,drive0;
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup()
{ 
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  pinMode(9, OUTPUT);
  pinMode(7,INPUT);
  pinMode(4,INPUT); 
  pinMode(2,INPUT);
}
void loop()
{
  Timer1.initialize(t); // period    
  Timer1.pwm(9, k); // k - fill factor 0-1023. 
  kn=digitalRead(7); 
  kn1=digitalRead(4); 
  kn2=digitalRead(2);
  if(kn==HIGH){ // decreasing the period 
    drive++;
    if(drive<30){ 
      t=t-1;  
    }
    // if the button is held for a long time, the correction of the pulse 
    else if(drive>30 && drive<60 ){ 
      t=t-10; 
    }
    else if(drive>=60 && drive<100){
      t=t-100;
    }
    else if(drive>=100){
      t=t-1000;
    }
  }
  else{
    drive=0;
  }
  if(kn1==HIGH){// adding a period 
    drive0++;
    if(drive0<30){
      t=t+1; 
      // if the button is held for a long time, the correction of the 
    }
    else if(drive0>30 && drive0<60 ){ 
      t=t+10; 
    }
    else if(drive0>=60 && drive0<100){
      t=t+100;
    }
    else if(drive0>=100){
      t=t+1000;
    }
  } 
  else{
    drive0=0;
  }
  if(t==0 || t>300000){ // limiting the pulse duration to the minimum, if 
    t=1;
  }
  if(t>200000 && t<300000){ // limiting the pulse duration to the 
    t=200000;
  } 
  f=1000000/t; // calculate the frequency 
  k1=k*100/1024; // calculate% fill factor
  if(kn2==HIGH){// button for adjusting the fill factor (in a circle from 
    k=k+16;// step 16 out of 1024 (you can do 8 for smoother adjustment)
  }
  if(k==1024){
    k=0;
  }
// displaying information on the indicator
  display.clearDisplay();
  display.setTextSize(1);             
  display.setTextColor(SSD1306_WHITE);       
  
  display.setCursor(0,0);             
  display.print("Freq: ");
  display.setCursor(30,0);             
  display.print(f);
  display.setCursor(0,20);             
  display.print("DUTY: ");
  display.setCursor(30,20);             
  display.print(k1);
  display.display();
}

PCB Assembly:

Then I mounted the other small headers, switches, screen and microcontroller chip. And after that I stick the breadboard here on the PCB and our digital kit is complete. Now we can make any digital circuit very simply like flip flop, counters and shift register and test their operation on this kit. 

 

Working And Testing The Kit:

Firstly, I tested all the voltages which I should also recommend whenever working with electronics. The input/ output and BCD counter and clock all the components are working well.

In the next version I will add a stable adjustable clock with sine and triangle wave generator function in this. May be a big screen and switching transistor for better interface and accuracy. You can also connect the external screen to this as shown here.

 

Ordering procedure:

Download the Gerber files from here > Upload the files to JLCPCB > Select the material, color and finishing > select PCB assembly > Upload BOM and CPL > Select parts and then add to cart.
Checkout using online payment methods and get your PCB within a week after dispatching. Sign-up using this link to JLCPCB and get worth of $54 new user coupons as a reward.
Design Drawing

Design Drawing

schematic diagram
1 /
PCB
1 /
The preview image was not generated, please save it again in the editor.
Project Members

Project Members

Related Projects
Change a batch
Loading...

Comment

Add to album ×

Loading...

reminder ×

Do you need to add this project to the album?

服务时间

周一至周五 9:00~18:00
  • 0755 - 2382 4495
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 立创EDA微信号

    easyeda

  • QQ交流群

    664186054

  • 立创EDA公众号

    lceda-cn