ngoprek mikro stc biar cuan

perkenalan dengan mikro stc karena ingin untuk banyak, bisa dibilang bikin sistem minimum harga dibawah 10.000 akan sangat sulit sekali, tidak dengan stc

berikut jenis ic stc yang pernah di icip icip

untuk downloader nya memaki ini dulu, maaf usb to serial ftdi nya ga ketemu

keunggulan memakai downloader ini, ketika produksi tidak diperlukan lagi komputer , karena firmware dari komputer berupa file hex di copy ke downloader ini.

untuk compiler memakai keil

berikut contoh program untuk menyalakn 1 led di port p3.2 dan 7 segment memakai driver 74595 di port p3.3,p3.4 dan p3.5

#include<reg51.h>
#include"intrins.h"


#define led_hi    P3|=(1<<2)
#define led_lo    P3&=~(1<<2)

#define data_hi    P3|=(1<<5)
#define data_lo    P3&=~(1<<5)
#define strobe_hi    P3|=(1<<4)
#define strobe_lo    P3&=~(1<<4)
#define clock_hi    P3|=(1<<3)
#define clock_lo    P3&=~(1<<3)

sfr P3M0 = 0xb2;
sfr P3M1 = 0xb1;

unsigned char counter;

unsigned char code fontsegment23[]=
{
	
	//badpfgedc normal
	0xD7,//0   x
	0x81,//1  x
	0xCE,//2
	0xCB,//3
	0x99,//4
	0x5B,//5
	0x5F,//6
	0xC1,//7
	0xDF,//8
	0xDB,//9
	0x00,
	0x00,
};

unsigned char code fontsegment23not[]=
{
	//eddpcgbaf terbalik
	
	0xD7,//0   x
	0x14,//1  x
	0xCE,//2   
	0x5E,//3
	0x1D,//4
	0x5B,//5
	0xDB,//6
	0x16,//7
	0xDF,//8
	0x5F,//9
	0x00,
	0x00,

};



void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	i = 29;
	j = 14;
	k = 54;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	i = 43;
	j = 6;
	k = 203;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay1us()		//@11.0592MHz
{
	unsigned char i;

	_nop_();
	_nop_();
	i = 1;
	while (--i);
}

void delay_us(unsigned int nilai)
{
	unsigned int i1;
	for(i1=0;i1<nilai;i1++)
	{
		Delay1us();
	}
}

void init_devices()
{
	 //push pull
	  // m1 m0
	  // 0   1
	  P3M0 |= (1<<2); 
	  P3M1 &=~ (1<<2); 
    P3M0 |= (1<<3); 
	  P3M1 &=~ (1<<3); 
	  P3M0 |= (1<<4); 
	  P3M1 &=~ (1<<4); 
	  P3M0 |= (1<<5); 
	  P3M1 &=~ (1<<5);
		data_lo;
		strobe_lo;
		clock_lo;
	
}
//======================================

void clock_74595()
{
	clock_hi;
	delay_us(1);
	clock_lo;
}

void strobe_74595()
{
	strobe_hi;
	delay_us(1);
	strobe_lo;
}


void kirimbyte74595(unsigned char dataku)
{
	unsigned char dataled;
	dataled=dataku;
	if(dataled&(1<<7))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<6))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<5))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<4))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<3))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<2))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<1))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<0))data_hi;else data_lo;
	clock_74595();
}
void main()
{
		init_devices();
		while(1)
		{
			for(counter=0;counter<10;counter++)
			{
				led_hi;
				kirimbyte74595(fontsegment23[counter]);
				kirimbyte74595(fontsegment23[counter]);
				kirimbyte74595(fontsegment23not[counter]);
				kirimbyte74595(fontsegment23[counter]);
				strobe_74595();
				Delay500ms();
				led_lo;
				Delay500ms();
				
			}
		
		}
	
}

file reg51.5 didapat dari STC-ISP.

hati hati untuk modul ada yang pakai ic STC8H1K08 TSSOP20 dan ada yang memakai STC8G1K08 TSSOP20. di sesuaikan saja

berikut file reg51.h pada compiler keil

jika file reg51.h dengan tipe ic yang dipakai tidak sesuai maka proses download firmware ke ic akan selalu gagal.

hasil compile pada keil

hasil ngoprek stc8h1k08-tssop20

untuk donwloader yang memakai ftdi nanti kita lanjut jikalau sudah ketemu

display timer operasi

Spesifikasi

– Power supply 180-240 VAC( panjang kabel 5 meter)

– display suhu, kelembaban, jam dan countdown memakai 7 segment 2.3inch

– warna display merah.

– Setting untuk count down memakai keypad

– sensor suhu dan kelembaban memakai autonics tipe thd (panjang kabel 5 meter)

– range suhu -19 s/d 60

– range kelembaban 0 s/d 99

pemesanan dhani 085228292473

belajar led blinking factory io nodemcu

software factory io sangat bagus sekali untuk belajar logika pemrograman. biasanya terhubung ke sebuah PLC. agar nodemcu bisa juga terhubung ke factory io cukup membuat library protocol modbus TCP

buka factory io. kemudian buat rancangan seperti gambar dibawah ini

terdapat 3 buah komponen

  • box (electric switchboard)
  • tiang box (column)
  • led indicator blue

kemudian setting driver yang dipakai

kemudian klik connect, jika berhasil maka. led hijau akan menyala. artinya arduino dan factory io sudah bisa berkomunikasi.

untuk ip nodemcu dan komputer (software factory io) dibuat 1 class.

misal arduino 192.168.0.50

komputer 192.168.0.10

untuk program nodemcu library yang dibutuhkan hanya library mudbus_wifi.h

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "Mudbus_wifi.h"
#include <Ticker.h>

kemudian setting ip address arduino dibuat 1 class dengan komputer


IPAddress staticIP(192, 168, 0, 50); //ESP static ip
IPAddress gateway(192, 168, 0, 1);   //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255, 255, 255, 0);  //Subnet mask
IPAddress dns(8, 8, 8, 8);  //DNS

const char* ssid = "KCM Markas Besar";
const char* password = "semerulima";

untuk coil yang dipakai hanya 1 buah. dialamat 8, alamat yang dipakai mesti sama dengan aplikasi.

Mudbus_wifi Mb;
#define led Mb.C[8] 

setelah dilakukan pengaturan tinggal membuat coil tersebut on dan off dengan interval 1 detik. disini saya menggunakan interrupt timer.

void loop() 
{  
     if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

untuk program complete nya bisa di copy seperti dibawah ini

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "Mudbus_wifi.h"
#include <Ticker.h>

Ticker timer;
Mudbus_wifi Mb;
#define led Mb.C[8] 


IPAddress staticIP(192, 168, 0, 50); //ESP static ip
IPAddress gateway(192, 168, 0, 1);   //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255, 255, 255, 0);  //Subnet mask
IPAddress dns(8, 8, 8, 8);  //DNS

const char* ssid = "KCM Markas Besar";
const char* password = "semerulima";



unsigned char status_timer1,status_led;

void ICACHE_RAM_ATTR onTime() {
  status_timer1=1;
  timer1_write(5000000);
}

//=============================================================
void setup() {

  Serial.begin(9600); 
  pinMode(2,OUTPUT);
  digitalWrite(2, HIGH);
  WiFi.config(staticIP, subnet, gateway, dns);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: "); Serial.println(WiFi.localIP());

  Mb.begin();
  delay(5000);  //Time to open the terminal
  
  timer1_attachInterrupt(onTime); // Add ISR Function
  timer1_enable(TIM_DIV16, TIM_EDGE, TIM_SINGLE);
  timer1_write(5000000);
}
//==================================================================
void loop() 
{  
     if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

hardware yang dipakai pada percobaan ini

video simulasi

untuk pemesanan alat bisa hubungi dhani 085228292473

atau kunjungi www.keiciptamandiri.com

start stop conveyor arduino factory io

part yang dipakai

mapping coil

mapping coil pada arduino


#define tombol_start Mb.C[0]
#define tombol_stop Mb.C[1]

#define led Mb.C[8]
#define led_start Mb.C[9]
#define led_stop Mb.C[10]
#define conveyor Mb.C[11]

cara baca tombol start stop

untuk tombol start ketika ditekan aktif high

untuk tombol stop ketika ditekan aktik low

 if(tombol_start==1)status_running=1;
    else if(tombol_stop==0)status_running=0;

    if(status_running==1){led_start=1;led_stop=0;conveyor=1;}
    else {led_start=0;led_stop=1;conveyor=0;}

program complete arduino

#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"

#define relay1 32
#define relay2 34

#define sensor1 5
#define sensor2 4
#define ddr_sensor  DDRE
#define port_sensor  PORTE
#define pin_sensor  PINE

unsigned char status_running;
Mudbus Mb;



#define tombol_start Mb.C[0]
#define tombol_stop Mb.C[1]

#define led Mb.C[8]
#define led_start Mb.C[9]
#define led_stop Mb.C[10]
#define conveyor Mb.C[11]


unsigned char status_timer1=0;
unsigned char status_led=0;
//=============================================================
void setup() {
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 1, 254 };
  uint8_t gateway[] = { 192, 168, 1, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);
  //Avoid pins 4,10,11,12,13 when using ethernet shield

  delay(5000);  //Time to open the terminal

   TCCR1A = 0;
  TCCR1B = 0;  
  TCNT1 = 34286;   // preload timer
  TCCR1B |= (1 << CS12);    // 256 prescaler 
  TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
  interrupts();             // enable all interrupts

  status_running=0;
}


//==================================================================
void loop() 
{    
    if(tombol_start==1)status_running=1;
    else if(tombol_stop==0)status_running=0;

    if(status_running==1){led_start=1;led_stop=0;conveyor=1;}
    else {led_start=0;led_stop=1;conveyor=0;}
    
    
    if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

ISR(TIMER1_OVF_vect)        // interrupt service routine 
{
  TCNT1 = 34286;   // preload timer
  status_timer1=1;
}

hasil simulasi video

untuk pemesanan alat custom hubungi 08528292473

belajar led blinking factory io

software factory io sangat bagus sekali untuk belajar logika pemrograman. biasanya terhubung ke sebuah PLC. agar arduino bisa juga terhubung ke factory io cukup di tambahkan sebuah modul ethernet dengan menggunakan protocol modbus TCP atau bisa juga menggunakan nodemcu yang penting support modbus tcp.

buka factory io. kemudian buat rancangan seperti gambar dibawah ini

terdapat 3 buah komponen

  • box (electric switchboard)
  • tiang box (column)
  • led indicator blue

kemudian setting driver yang dipakai

kemudian klik configuration

setting ip adress, alamat coil yang digunakan. sesuaikan dengan program pada arduino

kemudian klik connect, jika berhasil maka. led hijau akan menyala. artinya arduino dan factory io sudah bisa berkomunikasi.

untuk ip arduino dan komputer (software factory io) dibuat 1 class.

misal arduino 192.168.1.254

komputer 192.168.1.253

untuk program arduino library yang dibutuhkan hanya library mudbus.h, ethernet.h

#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"

kemudian setting ip address arduino dibuat 1 class dengan komputer

void setup() {
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 1, 254 };
  uint8_t gateway[] = { 192, 168, 1, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);
  //Avoid pins 4,10,11,12,13 when using ethernet shield


}

untuk coil yang dipakai hanya 1 buah. dialamat 8, alamat yang dipakai mesti sama dengan aplikasi.

Mudbus Mb;

#define led Mb.C[8]

setelah dilakukan pengaturan tinggal membuat coil tersebut on dan off dengan interval 1 detik. disini saya menggunakan interrupt timer.

void loop() 
{    
    if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

untuk program complete nya bisa di copy seperti dibawah ini

#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"

#define relay1 32
#define relay2 34

#define sensor1 5
#define sensor2 4
#define ddr_sensor  DDRE
#define port_sensor  PORTE
#define pin_sensor  PINE

Mudbus Mb;

#define led Mb.C[8]
unsigned char status_timer1=0;
unsigned char status_led=0;
//=============================================================
void setup() {
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 1, 254 };
  uint8_t gateway[] = { 192, 168, 1, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);
  //Avoid pins 4,10,11,12,13 when using ethernet shield

  delay(5000);  //Time to open the terminal

   TCCR1A = 0;
  TCCR1B = 0;  
  TCNT1 = 34286;   // preload timer
  TCCR1B |= (1 << CS12);    // 256 prescaler 
  TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
  interrupts();             // enable all interrupts
}


//==================================================================
void loop() 
{    
    if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

ISR(TIMER1_OVF_vect)        // interrupt service routine 
{
  TCNT1 = 34286;   // preload timer
  status_timer1=1;
}

hardware yang dipakai pada percobaan ini

video simulasi

untuk pemesanan alat bisa hubungi dhani 085228292473

atau kunjungi www.keiciptamandiri.com

bel cerdas cermat 3 grup menggunakan plc nv5

pada proyek kali ini kita akan membuat bel cerdas cermat 3 grup

  • jika tombol grup 1 ditekan maka indikator r1 akan menyala, tombol grup 2 dan grup 3 tidak berfungsi, jika tombol reset di tekan maka r1 akan mati
  • jika tombol grup 2 ditekan maka indikator r2 akan menyala, tombol grup 1 dan grup 3 tidak berfungsi, jika tombol reset di tekan maka r2 akan mati
  • jika tombol grup 3 ditekan maka indikator r3 akan menyala, tombol grup 1 dan grup 2 tidak berfungsi, jika tombol reset di tekan maka r1 akan mati
  • racangan hardwarenya seperti gambar dibawah ini

untuk ladder rancangannya

 

untuk pemesanan plc nv5 hubungi 085228292473

atau lewat tokped kei cipta mandiri