Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - kira

#1
 นำโค๊ดมาทดสอบ การส่งรับค่าArduino กับ HMI modbus ของ samkoon
รับส่งข้อมูล ได้ทั้ง analog และ digital แต่ติดปัญหาตรง เรื่องการส่งทศนิยม ไปยัง HMI ปรากฎว่าค่าไม่ขึ้น


//====== DHT =======
#include "DHT.h"
#define DHTPIN 4     // what digital pin we're connected to
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);
//-------DHT--------

//====== MODBUS =======
#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>

modbusDevice regBank;
//Create the modbus slave protocol handler
modbusSlave slave;
//-------MODBUS--------
int sensorPin = A0;
int sensorPin1 = A1;
float sensorValue = 0;  // variable to store the value coming from the sensor
const float sa  = 204.6;
int sensorValue1 = 0;
void setup() {
  // put your setup code here, to run once:
  pinMode (14,INPUT);
  pinMode (15,INPUT);
  pinMode (16,INPUT);
  pinMode (17,INPUT);
  pinMode (2,INPUT);

  pinMode (3,OUTPUT);
  pinMode (5,OUTPUT);
  pinMode (6,OUTPUT);
  pinMode (7,OUTPUT);
  pinMode (9,OUTPUT);
 
  //====== DHT =======
  dht.begin();
  //-------DHT--------
 
  //====== MODBUS =======
  //Assign the modbus device ID. 
  regBank.setId(1);
  //Add Digital Output registers 00001-00016 to the register bank
  regBank.add(1);
  regBank.add(2);
  regBank.add(3);
  regBank.add(4);
  regBank.add(5);
  //Add Digital Input registers 10001-10008 to the register bank
  regBank.add(10001); 
  regBank.add(10002);
  //Add Analog Output registers 40001-40020 to the register bank
  regBank.add(40001);
regBank.add(40002);
  regBank.add(40003);
  slave._device = &regBank; 
  // Initialize the serial port for coms at 9600 baud 
  slave.setBaud(9600);
  //-------MODBUS--------
}





void loop() {
    // put your main code here, to run repeatedly:
  //====== DHT =======
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  //-------DHT--------
 
 
  //====== INPUT ======
  if (digitalRead(14) == HIGH) // WATER LEVEL MAX
  {
    regBank.set(10001,1);   
  }
  else
  {
    regBank.set(10001,0);
  }
  if (digitalRead(15) == HIGH) // WATER LEVEL MAX
  {
    regBank.set(10002,1);   
  }
  else
  {
    regBank.set(10002,0);
  }
  //------- INPUT --------

  //====== OUTPUT ======

  if(regBank.get(1)== 0)
  {
    digitalWrite(3,LOW); 
  }
  else
  {
    digitalWrite(3,HIGH);
  }
  if(regBank.get(2)== 0)
  {
    digitalWrite(5,LOW); 
  }
  else
  {
    digitalWrite(5,HIGH);
  }
  if(regBank.get(3)== 0)
  {
    digitalWrite(6,LOW); 
  }
  else
  {
    digitalWrite(6,HIGH);
  }
  if(regBank.get(4)== 0)
  {
    digitalWrite(9,LOW); 
  }
  else
  {
    digitalWrite(9,HIGH);
  }
  if(regBank.get(5)== 0)
  {
    digitalWrite(7,LOW); 
  }
  else
  {
    digitalWrite(7,HIGH);
  }
  //------- OUTPUT --------
 
  sensorValue = analogRead(sensorPin);
         float Volt0 = sensorValue/sa;
  regBank.set(40002,Volt0);  ///=======>>> ค่าตัวนี้ไม่สามารถแสดงเป็นทศนิยมได้

    sensorValue1 = analogRead(sensorPin1);
  regBank.set(40003,sensorValue1);
 
  //====== MODBUS =======
  regBank.set(40001,t);
 
  slave.run();
  //-------MODBUS--------




 
}








#2
ตามหาคนหาย ใช้ชื่อในไลน์ ว่า Wizard

คือคุณจะเอายังไงกับผมกันแน่ครับ คุณเล่นเงียบมาข้ามปีแล้วนะครับ ผมรู้ว่าคุณสิง อยู่ในบอร์ดนี้ล่ะ คุณรับเงินมัดจำไปแล้ว2ใน3 แล้วคุณก็ทำงานผมพัง จนง่ายส่งช้า ผมโดนปรับ!!

แต่ผมติดต่อคุณไม่ได้เลย

ผมขอให้คุณโทรมาหาผม ภายในวันพรุ้งนี้ ไม่งั้นผมจะลงข้อมูล ตั้งแต่บ้านเลขที่
ที่อยู่ปัจจุบัน และชื่อจริง บัตรประชาชน เอามะนไปหาหลอกคนอื่นไม่ได้อีก
หากคุณเป็นลูกผู้ชาย โทรมาครับ
#3
ผออยากจะทำ data logger web server ครับ
ตอนนี้ ผมลองใช้ dspic 33websaver แต่มันไม่ได้บันทึกอะไรไว้ โชว์แค่ผ่านหน้าเว็บเฉยๆ

ถ้าผมจะเอาข้อมูลที่ส่งมาเป็น %22 %23 %24
ที่หน้าเว็บรับมาแสดงผล เอามาบันทึกลงในคอม หรือใน excel
ผมจะมีวิธีไหนได้บ้างครับ

ช่วยแนะนำตัวอย่างหรือเรื่องที่ผมต้องไปศึกษาเพิ่มหน่อยครับ
#4
สวัสดีครับ

ผมต้องการคนทำproject งานวงจรanalog
ประมา4-5วงจร ครับ

แอดไลน์มาคุย Id: kira0002

จะได้ส่งรูปให้
#5
สวัสดีครับ

   ผมอยากสอบถามเรื่อง Code ของการเพิ่มจำนวน อินพุต ADC
ซึ่ง ET-dsPIC33WEB จะมีตัวอย่างมาแค่ 1 อินพุต ADC คือ RB5

แต่ผมอยากจะให้มันรับได้สัก 4-6 อินพุต ต้องทำอย่างไรครับ
นี้Code ตัวอย่าง


// Read ADC Result
static void ProcessIO(void)
{
#ifdef __C30__
    uitoa((WORD)(ADC1BUF0*(3.3/4095)), AN0String); // Convert potentiometer result into ASCII string
#endif
}




// ADC Config
AD1CON1 = 0x84E4; // Turn on, auto sample start, auto-convert, 12 bit mode (on parts with a 12bit A/D)
AD1CON2 = 0x0404; // AVdd, AVss, int every 2 conversions, MUXA only, scan
AD1CON3 = 0x1003; // 16 Tad auto-sample, Tad = 3*Tcy
    AD1CHS = 0; // Input to AN0 (potentiometer)
AD1PCFGbits.PCFG4 = 0; // Disable digital input on AN5 (potentiometer)
AD1CSSL = 1<<4; // Scan pot




  ขอคำแนะนำด้วยครับ
ขอบคุณครับ

#6
ผมอยากได้ชุดส่งข้อมูล สัญญาณAnalog เพื่อส่งไปแสดงหน้าเว็บ
แต่อยากใช้ Sim มือถือแทน สายแลน ครับ

ไม่ทราบว่า ของ ETT มีไหมครับ หรือของเจ้าอื่นที่มีตัวอย่างการใช้งานครับ

เห็นมีแบบ DSpic 33 web แต่ตัวนี้มันต้องต่อกับrouter ผ่านสายแลน เพื่อทำเชอฟเวอร์
หากผมไม่ใช้router  แต่ให้ใช้อินเตอร์เน็ตผ่านSimเลย มีไหมครับ ของจีนสำเร็จรูปก็ได้ ครับ

ขอบคุณครับ
#7
แนะนำ mosfet สวิตท์ที่ความเร็วสูงหน่อยครับ ประมาณ 50V 5A (สูงกว่านี้ก็ได้ครับ)
ความถี่สวิตชิ่งประมาณ6-10Mhz  เอาที่หาชื้อได้ในไทย นะครับ ถ้าสั่งนอกกลัวไม่ทัน

ขอบคุณครับ
#8
สติ๊กเกอร์บอกตำแหน่งหน้าจอ แบบนี้ เขาทำกันที่ไหนครับ แพงไหม เห็นเนื้อสติ๊กเกอร์ไม่เหมือนใคร

#9
เป็น Switching input 220v out 5vหรือ 24v
เป็นแบบโมดูล ใส่ในpcb ได้เลยโดยไม่ต้องออกแบบ วงจรจ่ายไฟใหม่ครับ
เห็นเขาขายของ meanwell ราคาแพงมากครับ สัก1Aพอ
#10
ต้องการชื้อ xbee pro S2 มือสอง

#11



จากรูปผมเลือกใช้ 12f683 แทนไมโครในภาพ
และนี่คือโค๊ด ใช้กับ 74HC595 แค่ตัวเดียว ถ้าเกิดผมจะใช้ 2ตัว แบบในรูปผมตรงแก้ไขตรงไหนครับ
unsigned char count=0;
unsigned char segment[10] = {
  0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
/////////////////////////Phototype Function/////////////////////////////////
void delay(int time);
void send_data(unsigned char data);
main()
{
  CMCON0 = 7;
  ANSEL = 0;
  TRISIO = 0b00001000;
  GP0=0;
  GP1=0;
  GP2=0;
  while (1)
  {
    if(count<10)
    {
      send_data(segment[count]);
      count++;
      delay(5);
    }
    else
    {
      count=0;
    }
  }
}
void send_data(unsigned char data)
{
  unsigned char k;
  GP0 = 0; // low
  GP1 = 0; // clock low
  for (k=0;k<8;k++)
  {
    GP2 = (data&0x80); // send data MSB before
    GP1 = 1; // clock high
    data<<=1; // shift data
    GP1 = 0; // clock low
  }
  GP0 = 1; //Latch high
}
void delay(int time)
{
  unsigned char i;
  for(i=0;i<time;i++)
  {
    __delay_ms(100);
  }
}
#12
สวัสดีครับ
  ราคาxbee pro ค่อยข้างแพง ถ้านำมาทำโปรเจ็คที่ผมกำลังทำไม่น่าจะคุ้ม
เลยอยากถามว่า มีตัวไหนบ้างที่ใช้ได้เหมือนxbee และราคาถูกกว่า

ขอบคุณครับ
#13
คือผมใช้dspic30f c30 mplab อยากจะปรับความถี่ตามค่าadc

ผมเห็นตัวอย่างที่ปรับได้แต่ดิวตี้ แต่ยังไม่เคยเห็นการปรับความถี่ ไม่รุ้ว่าต้องกำหนดแบบไหน
ขอคำแนะนำด้วยครับ
#14
คือผมใช้แกน เฟอร์ไรส์ ETD 34
พันL โดยอยากได้ค่า 33uHแต่พันได้แค่ไม่กี่รอบเองครับ ผมจะเอามาทำวงจร Boost
ผมกลัวมันจะ เจอPeak ของกระแส
ลองใช้แกนเทอรอยด์ก็ได้ไม่ถึง10รอบเลยครับ

อยากทราบว่าต้องพันแบบไหนครับ
#15
ขอคำแนะนำเรื่องการลบLCD

ผมอยากจะลบข้อมูลในหน้าจอของ LCD แต่ละช่องจะต้องทำยังไงใช้คำสั่งไหนครับ
ยกตัวอย่างเช่น  "LCD" เมื่อลบ "LC " ประมาณนี้ครับ
ถ้าใช้คำสั่งนี้มันจบลบหมดเลย LCD_Clear ();
ผมเลยอยากขอคำแนะนำหน่อยครับ
#16
ผมจะหาชื้อ rotary encoder switch ที่ไหนได้ครับ
เอาแบบที่อ่านเป็น BCD นะครับ ค่อยง่ายหน่อย
#17
ผมติดต่อระหว่างไมโครกับคอมพิวเตอร์ แต่ใช้ Sprintf (%1.1f) เพื่อปริ้นค่าที่อ่านได้จาก ADC แต่ไม่สามารถคอมไพร์ผ่านได้ ผมประกาศตัวแปรเป็น Float แล้วนะครับ

คือผมอยากได้ทศนิยม ครับ

ถ้าเป็นแบบ Sprintf (%d) ผ่านและแสดงผลได้ ปกติ แต่ไม่มีทศนิยมแค่นั้น

ขอคำแนะนำครับผม หรือโค๊ดตัวอย่างก็เยี่ยมเลยครับ

#18
พอดีว่าจะใช้ในบริษัทครับแต่เขาไม่ให้ติดตั้ง เลยจะเอาแบบPortable MPLAB

พอจะมีให้โหลดไหมครับ
#19
กล่องลักษณะนี้ทำที่ไหนครับหรือแบบอื่นก็ได้ และราคาแพงไหมครับ
#20
ช่วยแนะนำProgram เขียน PLC Delta  DVP20ex หน่อยครับไม่เคยเจอจริงๆแบบนี้