Tuesday 7 October 2014

In this Artical we will see how to establish communication between computer/mobile to Arduino in a LAN or Wireless Network. We are interfacing the ENC28J60 Ethernet controller to Arduino so that our Arduino will be the one of member of that network. Once it will done the arduino can control things in that network or the arduino can be controlled by the other devices of that network it might be computer or mobile. Interfacing Arduino with the ENC28J60 will further gives us the freedom of using the internet on Arduino but before that we need to learn how to do all that networking stuff in a locan network.

Soon I will post about how to control the things in local network, how to send data on a local network, and how to interfaced with Android devices or how to make IOT Devices. IOT Devices are quite famous.
 

A simple block diagram of the data flow  is in the image below.


Ethernet Module( ENC28J60):  Microchip's ENC28J60 is a 28-pin,  Ethernet Controller with on board MAC & PHY, 8 Kbytes of Buffer RAM and an SPI serial interface. With a small foot print package size the ENC28J60 minimizes complexity, board space and cost. It used in so many application like Industrial Automation, Building Automation, Home Control, Security and Instrumentation, IOT Devices.
You can build Your own circuit but I use the Module to save my time.



VIRTUAL SIMULATION: I first simulate my design on the Proteus ISIS to make sure I am working in right direction and also to save my time. In ISIS their is already a component named "ENC28J60 ethernet controller" so I picked it from the library. Now I picked up the Arduino and connect it with the ethernet controller.


if the link dont work please comment

* Connections:   
  
Now make these connection in the ISIS design tool.


SOFTWARE: Now we all done with the Virtual Hardware Design lets make the software. All you need is the Ethercard Library for this example. Download it from here EtherCard. Click here
  • Extract the ZIP file , copy and paste the folder in your Arduino1.xx/library/  
  • once you place the folder in your arduino library folder restart your Arduino IDE
  • Now  go to ethercard > Examples > backsoon
 
 Compile the code  : if facing any problem then go to :  How To Simulate Arduino in ISIS

Make some changes in the program as given below
changes are in Red colour
Arduino code
/*#############################################################################
###############################################################################*/

// Present a "Will be back soon web page", as stand-in webserver.
// 2011-01-30 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

#define STATIC 0  // set to 1 to disable DHCP (adjust myip/gwip values below)

#if STATIC
// ethernet interface ip address
static byte myip[] = { 192,168,1,200 };
// gateway ip address
static byte gwip[] = { 192,168,1,1 };
#endif

// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[500]; // tcp/ip send and receive buffer

// char page[] is the HTML page you are uploading ..
char page[] PROGMEM =
"HTTP/1.0 503 My Seriavice \r\n"
"Content-Type: text/html\r\n"
"Retry-After: 600\r\n"
"\r\n"
"<html>"
  "<head><title>"
    "2embeddedrobotics "
  "</title></head>"
  "<body>"
    "<h3>Welcome to 2embeddedrobotics</h3>"
    "<p><em>"
      "The World of IOT Devices .<br />"
      "yipeee   Congrats...."
    "</em></p>"

   "</body>"
"</html>"
;

void setup(){
  Serial.begin(9600);
  Serial.println("\n[backSoon]");
 
  if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    Serial.println( "Failed to access Ethernet controller");
#if STATIC
  ether.staticSetup(myip, gwip);
#else
  if (!ether.dhcpSetup())
    Serial.println("DHCP failed");
#endif

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip); 
  ether.printIp("DNS: ", ether.dnsip); 
}

void loop(){
  // wait for an incoming TCP packet, but ignore its contents
  if (ether.packetLoop(ether.packetReceive())) {
    memcpy_P(ether.tcpOffset(), page, sizeof page);
    ether.httpServerReply(sizeof page - 1);
  }
}
/*##############################################################################
###############################################################################*/

now compile the code with prefrence compile. in file option.. so that you will get the .HEX file for ISIS.







Now you have done every thing . Hit the Play Button and it will give you the assigned IP address in serial monitor now write it down on a paper.

 
open the web browser and write the IP address of your arduino in the browser.
 

 Now you can watch this page on any device connected to that network  As I show.

HARDWARE: We already did everything in virtual now we just need to connet each component as per the connection given in starting.
Now upload the program to your Arduino and turn on its Serial monitor so that u can get Your 
"IP in Serial Monitor" and just open browser and put your IP and check the webpage.



Now you have done then note your IP from the serial monitor and Enjoy..
Wish you a very good Luck.
 
 

Ethernet(ENC28J60) Interfaced Arduino

Saturday 4 October 2014

Carbon Nanotube Field Effect Transistor(CNTFET) is an promising alternative of an conventional CMOS technology in future. improvement in integration densities in past few years is remarkable but aggressive scaling of these MOS devices reaching to its limit. so the CNT replaces the isilicon so the CNTFET replaces the MOSFETs. 

Stanford university made an CNTFET model which we are using here. The codes are same as for MOSFET but the parameters need to be change like here Dcnt (diameter) of the CNT plays a role like L in the MOSFET.

SETUP: First we need to setup the the tools for CNTFET.
  • Install the HSPICE in your system 
  • download the library of CNTFET from standford university website. or CLICK HERE
  • make a directory with the name of project and paste all the file in the project from the package you downloaded from stanford university
WRITE THE CODE: Now write the code for the circuit in my case i am writing a code for an inverter.

***************************************************
***************************************************
*For optimal accuracy, convergence, and runtime
***************************************************
.options POST
.options AUTOSTOP
.options INGOLD=2     DCON=1
.options GSHUNT=1e-12 RMIN=1e-15
.options ABSTOL=1e-5  ABSVDC=1e-4
.options RELTOL=1e-2  RELVDC=1e-2
.options NUMDGT=4     PIVOT=13

.param   TEMP=27
***************************************************


***************************************************
*Include relevant model files
***************************************************
.lib 'CNFET.lib' CNFET
***************************************************
*Some CNFET parameters:


.param Ccsd=0      CoupleRatio=0
.param m_cnt=1     Efo=0.6    
.param Wg=0        Cb=40e-12
.param Lg=32e-9    Lgef=100e-9
.param Vfn=0       Vfp=0
.param m=19        n=0       
.param Hox=4e-9    Kox=16

***********************************************************************
* Define power supply
***********************************************************************


*Vdd     1     0     0.9



***********************************************************************
* Main Circuits
***********************************************************************
* nFET

X2 Out N_1 Gnd Gnd NCNFET Lch=Lg  Lgeff='Lgef' Lss=32e-9  Ldd=32e-9 
+ Kgate='Kox' Tox='Hox' Csub='Cb' Vfbn='Vfn' Dout=1  Sout=0  Pitch=20e-9  n1=m  n2=n  tubes=3

* pFET

X1 Out N_1 Vdd Vdd PCNFET Lch=Lg  Lgeff='Lgef' Lss=32e-9  Ldd=32e-9 
+ Kgate='Kox' Tox='Hox' Csub='Cb' Vfbp='Vfp' Dout=1  Sout=0  Pitch=20e-9  n1=m  n2=n  tubes=3

VVoltageSource_1 Vdd Gnd  DC 0.9
VVoltageSource_2 N_1 Gnd  PULSE(0 0.9 0n 5n 5n 50n 100n)

***********************************************************************

.tran 1n 500n

.MEASURE avg_pow AVG power FROM=1n TO=500n

.MEASURE TRAN t1 TRIG V(N_1) VAL = 0.45 TD = 0n RISE = 1
+ TARG V(Out) VAL = 0.45 FALL = 1

.MEASURE TRAN t2 TRIG V(N_1) VAL = 0.45 TD = 0n FALL = 1
+ TARG V(Out) VAL = 0.45 RISE = 1


.MEASURE TRAN tp PARAM='(t1+t2)/2.0'


.OPTION PROBE POST MEASOUT
.end
***********************************************************************
***********************************************************************
Now after writing the code save it with the extension "your_file_name.sp".




HSPICE : Now lets start to simulate your design with HSPICE.

1) Open the HSPICEpui





2) Click the OPEN Button to open the design file or the code file you wrote. Browse your design file in the design section and left rest of the thing.



3) Now click the Simulate button .

4) Now open the 'Avanwaves' to view your pulses or the output.


5) Now click the operating points you want to view like in my case i double click on vin and vout.
and  see the wave form.

6) Now click on the Editll to view your result like Power , Propagation Delay , Hold Time etc.


As you can read that the average power(avg_power) is .17 microwatt and propagation delay(tp) is about .18 ps.

*********************************************************
                                           Clean India
*********************************************************
Please share and comment if you see this tutorial informative
*********************************************************

CNTFET Inverter "Design & Simulation using HSPICE"

 
2embeddedrobotics © 2015 - Designed by Templateism.com