Maker Pro
Maker Pro

1kW $50 E-Cat ?

C

Curbie

Jan 1, 1970
0
Tried it, the best way so far, has been using a simple metal
rectangular template and screwing the template into the cutout and
through to a piece of wood, and using a exacto knife.

This stuff is tough.

Curbie
 
A

amdx

Jan 1, 1970
0
Tried it, the best way so far, has been using a simple metal
rectangular template and screwing the template into the cutout and
through to a piece of wood, and using a exacto knife.

This stuff is tough.

Curbie


rectangular template and screwing the template into the cutout and
through to a piece of wood, and using a exacto knife.

This stuff is tough.

Curbie

I'm guessing it's polypropylene?
Mikek
 
J

Jim Wilkins

Jan 1, 1970
0
Curbie said:
Jim,

My loops are all under 1ms including responses, just waiting for
button de-bouncing takes 20ms or 20 loops that can be doing something
else, I have no delay() functions, just a bunch of timer variables
that basically say, is it time to do the next step.

If you can use SPDT switches this 4050 buffer circuit debounces them
cleanly:
http://www.ichaus.de/upload/pdf/ML1d_a1es.pdf

jsw
 
C

Curbie

Jan 1, 1970
0
Jim.

I just do it in software, also illustrates the use of a timing
variable.

Curbie

/* function to determine if a button is being pressed. If so, returns
the button code constant representing
the button being pressed. If no button has been pressed, BV_NONE is
returned. If multiple buttons are
pressed (generally precluded by the mechanics of the buttons, but
possible nonetheless), the first button
pressed is returned.

The function reads the input shift register data and masks off the
non-switch bits. It stores the current
state of the switches in a static variable. It also stores a static
boolean representing a change in raw
switch data, for debouncing. When new switch data from the input
shift register differs from the previously
stored value, the boolean "debouncing" is set true and the system
time is stored. When the function is
entered with the boolean "debouncing" set true, the current time is
compared to the previously stored
time to see if the debounce period has eneded. If so, the input shift
register data is again sampled and
if the state is the same as previously, a switch activation is
declared and the swtich value is encoded
and returned.

This function is non-blocking. It returns immediately and does not
block on the debounce time. Debouncing
is determined dynamically each time the function is called. */
int getButton() { // get button
value of button curently being pressed
static unsigned long changeDetectionTime; // variable to
hold the system time for debouncing
static boolean debouncing = false; // set true if
debouncing
static byte buttonState = 0; // hold the last
read state of the button shift register for debouncing
byte newbuttonState; // hold the
current data from the button switch register
const unsigned long DEBOUNCE_TIME = 20L; // 20 milliseconds
to debounce buttons

if (debouncing) { // if in the
process of debouncing buttons
if ( milliSec(changeDetectionTime) < DEBOUNCE_TIME) { // if still
waiting on debounce
return BV_NONE; } // return to
caller, no button(s) presses
else { // if debounce
time expired
newbuttonState = readButtons(); // read button
data for any button(s) pressed
newbuttonState = newbuttonState & 0x3F; // mask off unused
2 bits
debouncing = false; // flag NOT in the
process of debouncing switches
if (newbuttonState == buttonState) { // if button data
onfirmed
if ( (buttonState == 0) ) return BV_NONE; // return to
caller, no button(s) presses
if ( (buttonState & 0x01) != 0 ) return BV_MENU;
if ( (buttonState & 0x02) != 0 ) return BV_SELECT;
if ( (buttonState & 0x04) != 0 ) return BV_UP;
if ( (buttonState & 0x08) != 0 ) return BV_DOWN;
if ( (buttonState & 0x10) != 0 ) return BV_LEFT;
if ( (buttonState & 0x20) != 0 ) return BV_RIGHT;
return BV_ERROR; } // just in case
something went wrong with the code!
else { // switch action
not confirmed -- just noise
return BV_NONE; // return to
caller, no button(s) presses
} // end if button
data onfirmed
} // end if still
waiting on debounce
} // end if in the
process of debouncing buttons
else { // code if not
debouncing
newbuttonState = readButtons(); // read button
data for any button(s) pressed
newbuttonState = newbuttonState & 0x3F; // mask off extra
bits
if (newbuttonState == buttonState) { // if no change in
the button shift register data
return BV_NONE; } // return to
caller, no button(s) presses
else { // shift register
data has changed -- debounce
buttonState = newbuttonState; // store the new
switch state
changeDetectionTime = millis(); // store time time
for debouncing
debouncing = true; // set debouncing
flag
return BV_NONE; // no decision
until after debouncing time and re-verification
} // end if no
change in the button shift register data
} // end if in the
process of debouncing buttons
} // end getButtons
function

//
.................................................................................................
//
/* function to read in the button data from the 74HC165 shift
register. One unsigned byte of data is returned.
arguments: none.
return: one byte of data representing:
bit 0: BV_MENU button depressed
bit 1: 5-way switch BV_SELECT button depressed
bit 2: 5-way switch BV_UP position activated
bit 3: 5-way switch BV_DOWN position activated
bit 4: 5-way switch BV_LEFT position activated
bit 5: 5-way switch BV_RIGHT position activated
bit 6: spare - not presently connected
bit 7: spare - not presently connected
It is possible to have multiple bits set in the returned byte. The
returned byte just contains the present status
of all 8 74HC165 parallel inputs. */
byte readButtons() { // read button
data to see if any and what buttons have been pressed
byte buttonData = 0; // current buttons
pressed data

digitalWrite (BTN_CLOCK, HIGH); // initialize
digitalWrite (BTN_LATCH, LOW); // start
handshake?? sample the buttons
digitalWrite (BTN_LATCH, HIGH); // start
handshake?? sample the buttons
buttonData = shiftIn (BTN_DATA, BTN_CLOCK, MSBFIRST); // read in the
shift register data
return buttonData; // return to call
the button data
} // end readButtons
function
 
J

Jim Wilkins

Jan 1, 1970
0
Morris Dovey said:
I don't know if you can get at this or not
http://www.facebook.com/media/set/?set=a.181820571906662.48277.100002361608145&type=1
I think I might be more inclined to just take the lid off when I want to
use the machine.
Morris Dovey

If possible I like to use a flat sheet hinged to the box for the control
panel. The flat sheet can be clamped securely to plywood on a drill press or
milling machine table. Run the wire bundle along the hinge side and clamp it
to the hinge screws, the lid side on one end and the box side on the other,
so the wires twist freely like your wrist joint as the lid opens and closes.
This works well for removeable covers too.

jsw
 
J

Jim Wilkins

Jan 1, 1970
0
Curbie said:
Jim.

I just do it in software, also illustrates the use of a timing
variable.

Curbie

buttonState = newbuttonState;
[20mS timer expires]
newbuttonState = readButtons();
if (newbuttonState == buttonState) {
}

Thanks, that's nice and logical. I suppose if I had to use 55mS PC system
clock ticks for the delay I would have to check that TIMER had incremented
twice to guarantee that I didn't sample the buttons just before and just
after a ~20uS tick interrupt.

jsw
 
M

Mho

Jan 1, 1970
0
No innuendos there. I thought the opinion was pretty clear and still seems
fairly likely.

You were not dragged into any particular part of discussions and there was
no need for grandiose declarations other than some form of attention
seeking.


---------
"Vaughn" wrote in message
The deeper I look the more I smell SCAM.

I don't disagree that it's not hard to find potential scam markers in
this story, and have pointed them out in the past.

Probably selling their webpage
hit count and somebody here is getting a kickback, in the flavour of
what I originally posted.

Somebody HERE? So now were about to descend into innuendo and finger
pointing? Do it without me please. I'd rather just sit here and await
events. This will very soon be proven or disproven.

Vaughn
 
J

Jim Wilkins

Jan 1, 1970
0
Morris Dovey said:
...

A couple of years back I built a small CNC that'd make it quick and clean.
:)
Morris Dovey

When I had the opportunity to buy a milling machine for an electronics lab I
picked an RF-31 mill-drill as the cheapest machine that would do the jobs
required well enough. It's just barely big enough to handle a 19" relay rack
panel.
http://www.use-enco.com/CGI/INSRIT?PMAKA=105-1110
It was rugged enough to mill a solid chunk of stainless steel, but not as
accurate as I could have wished. 0.005" tolerance was about its limit for
height, 0.002" for X and Y.

The company owned a nice Bridgeport that was stored in the pump room where
we couldn't use it, and wouldn't fit in our second-floor lab anyway. I had
to sell it to pay for the mill-drill. Arrrgh!

I machined a lot of experimental electronics parts on Bridgeports at Segway
and would own one if I had the space at home. I don't and get along fine
with a 50-year-old smaller mill whose modern equivalent is this:
http://www.grizzly.com/products/Vertical-Mill/G3102

jsw
 
J

Jim Wilkins

Jan 1, 1970
0
Morris Dovey said:
On 1/31/12 7:34 AM, Jim Wilkins wrote:
...
You wouldn't believe the amount of time I spent looking at the small
RongFu and Enco small mills trying to figure out if I could manage to
retrofit steppers for a CNC conversion - including that exact machine!

That caught me by surprise. I hadn't realized that you'd been a part of
the great Segway adventure. I hope it was as interesting for you as I'm
imagining! :)

Segway hired me as a temp after their lab tech injured himself and needed an
operation. At my age no one wants me on their health insurance policy as a
permanent employee. Segway had its good and bad moments like most other
places I've worked. It was a playground more for the mechanical than the
electronic personnel, though I was invited in on a few tiger-team projects
as I am very good at building intricate toys.

Research and development at small companies doesn't give steady long-term
employment. The best I can ask for is to be given a project specification
and be left alone to design and build it. Most places have given me that
freedom.

When the book "The Soul of a New Machine" came out I was in the middle of a
similar project with a similarly highly skilled and motivated team led by a
Feynman-type Ph.D. I was maintaining the overall documentation, designing
and building board test fixtures and writing low-level hardware test code.
Like several other places I've worked a lawsuit during a recession killed
that company.

I've never seen the need for CNC to machine most one-off prototypes. You
still need to know how to operate the machine manually to understand speeds
and feeds and clamping rigidity. Mills make orthogonal plane surfaces and
lathes cut cylinders just fine without automation, and angles or conical
tapers require only simple accessories.

Here is a steering sector gear I made for my tractor using a home-made gear
cutting bit. I've since replaced that worn and ragged rotary indexer.
https://picasaweb.google.com/KB1DAL/HomeMadeMachines#5285710370886636434
https://picasaweb.google.com/KB1DAL/HomeMadeMachines#5285710360947850418

That mill doesn't even have a digital readout. I cut close to final size,
measure, and crank in the difference.

jsw
 
C

Curbie

Jan 1, 1970
0
Morris,

Yes, I still play with testing algae in two liter soda bottles, for
growth rate and what they like to live, I'm focusing on indigenous
algae now and trying to determine what is their composition of sugar,
starch, and lipids.

I also have designed an Open Source computer (Arduino) monitored fuel
ethanol still which I'm currently writing up.

You still at the same email address???

Curbie
 
Top