Tuesday, February 23, 2010

Solar Panel (Circuits Lab)

The solar panel is not unlike the lemon battery. Instead of an electrochemical reaction involving acidity and conductivity, in the case of a solar panel, we have a photovoltaic reaction (light converted into energy). Everyday solar cells are also known as photovoltaic cells. When light in the form of photos hits an electrically neutral NPN photovoltaic cell, its energy disrupts the "holes" of a P section of the semiconductor enough to cause a flow of electricity.

In Retrospect

Daine and I spent hours and hours making sure our engine was as efficient as possible. As you can see in our engine video, however, it stuggles. In the interest of time, we rushed the final fase of our project - attaching the displacer and balloon-piston to the crankshaft. We ended up using very coarse and slightly rusty steel wire for our attachment, which obviously was not very flexible. The fact that our engine ran anyways I believe is an accomplishment in of itself. One of these days we will pick the project back up again and redo a few things. But I think Daine and I would both agree that we need a bit of a break :)

Lemon Battery (Circuits Lab)

In this demo, a zinc screw and copper penny are inserted into a lemon "battery" and a potential difference is measured via a voltmeter. The opposing chemical nature of zinc and copper immersed in the acidity of the lemon cause an electrochemical reaction, which results in a flow of current through the wires and voltmeter. Zinc is a better conductor than copper, thus the electrons head in the zinc screw's direction, as shown the the picture below. Remember, negatively charged electrons flow out the the negative end of the battery.



Courtesy of http://hilaroad.com/camp/projects/lemon/lemon_battery.html

Connor's Ideal Gas Sim

from visual import *

ball = sphere(pos=(-5.5, 0, 0), radius = 0.5, color=color.cyan)
ball.velocity = vector(25,5,25)

ball2 = sphere(pos=(2, -5.5, 0), radius = 0.5, color=color.red)
ball2.velocity = vector(30,-10,5)

wallR = box(pos=(6,0,0), size=(0.2,12.2,12), color=color.green, opacity = 0.5)
wallL = box(pos=(-6,0,0), size=(0.2,12.2,12), color=color.green, opacity = 0.5)
wallT = box(pos=(0,6,0), size=(12,0.2,12), color=color.green, opacity = 0.5)
wallB = box(pos=(0,-6,0), size=(12,0.2,12), color=color.green, opacity = 0.5)
wallBack = box(pos=(0,0,-6), size=(12,12,0.2), color=color.green, opacity = 0.5)
wallFront = box(pos=(0,0,6), size=(12,12,0.2), color=color.green, opacity = 0.08)

deltat = 0.005
t = 0

vscale = 0.1
varr = arrow(pos=ball.pos, axis=vscale*ball.velocity, color=color.yellow)
varr2 = arrow(pos=ball2.pos, axis=vscale*ball2.velocity, color=color.yellow)

scene.autoscale = False

ball.trail = curve(color=ball.color)
ball2.trail = curve(color=ball2.color)

while t<3e4:
rate(100)

if ball.pos.x+ball.radius > wallR.pos.x or ball.pos.x-ball.radius < wallL.pos.x:
ball.velocity.x = -ball.velocity.x
if ball.pos.y+ball.radius > wallT.pos.y or ball.pos.y-ball.radius < wallB.pos.y:
ball.velocity.y = -ball.velocity.y
if ball.pos.z-ball.radius < wallBack.pos.z or ball.pos.z+ball.radius > wallFront.pos.z:
ball.velocity.z = -ball.velocity.z

if ball2.pos.x+ball2.radius > wallR.pos.x or ball2.pos.x-ball2.radius < wallL.pos.x:
ball2.velocity.x = -ball2.velocity.x
if ball2.pos.y+ball2.radius > wallT.pos.y or ball2.pos.y-ball2.radius < wallB.pos.y:
ball2.velocity.y = -ball2.velocity.y
if ball2.pos.z-ball2.radius < wallBack.pos.z or ball2.pos.z+ball2.radius > wallFront.pos.z:
ball2.velocity.z = -ball2.velocity.z

ball.pos = ball.pos + ball.velocity*deltat
ball.trail.append(pos=ball.pos)
ball2.pos = ball2.pos + ball2.velocity*deltat
ball2.trail.append(pos=ball2.pos)

varr.pos = ball.pos
varr.axis = vscale*ball.velocity
varr2.pos = ball2.pos
varr2.axis = vscale*ball2.velocity

t = t + deltat